As a Java developer, you're always looking for tools to help in your web and application development. Maybe you've heard of the Jakarta Commons open source Java tools. The Jakarta Commons is an open source Jakarta subproject where developers create and maintain a collection of twenty-plus independent Java components and utilities that serve useful purposes. Jakarta Commons packages include utilities for web, XML, networking, building and testing applications, and some that help other packages work better together. Jakarta Commons packages are designed to be reusable. Each one is a time saver by itself, and when used in combination the results can be very powerful. But in searching for information on the Jakarta Commons tools, you find it hard to locate documentation relevant to your needs. You don't have lots of time to spend searching for information on a specific Jakarta Commons tool to determine what it does and how to incorporate it in your code. If you are looking for a single source for clear information and samples on how to use the Jakarta Commons tools, then the Jakarta Commons Cookbook is for you.
The Jakarta Commons Cookbook summarizes each of the available Jakarta Commons packages and contains practical and efficient recipes for making the most out of the Jakarta Commons open source Java tools. You don't have to be an expert, since the book explains how and why to use a utility, pitfalls to avoid, and where to look for additional information on Jakarta Commons utilities. It introduces design possibilities and explores combining Jakarta Commons utilities in novel assemblies to create complex applications. The book offers detailed code samples and insider tips--making it a valuable resource whether you are an expert Java developer or a novice. If you want to quickly learn how to use Jakarta Commons timing-saving utilities or have an invaluable resource for Jakarta Commons questions and techniques, then the Jakarta Commons Cookbook is for you.
Tim is a professional singer/programmer living and working in the Chicago area. He prefers Emacs to vi. Tim discovered programming on a TRS-80, and went on to study (and subsequently forget) Electrical Engineering at UVA. In his free time Tim likes to sleep, study music, build toys with microcontrollers, and participate in open source projects. Tim is active in the Jakarta Commons.
Preface 1. Supplements to the Java 2 Platform 1.1 Obtaining Commons Lang 1.2 Joining the Commons-User Mailing List 1.3 Getting the Commons Lang Source Code 1.4 Automating the Generation of toString( ) Content 1.5 Customizing Generated toString( ) Content 1.6 Automating hashCode( ) and equals( ); 1.7 Automating compareTo( ) 1.8 Printing an Array 1.9 Cloning and Reversing Arrays 1.10 Transforming Between Object Arrays and Primitive Arrays 1.11 Finding Items in an Array; 1.12 Creating a Map from a Multidimensional Array 1.13 Formatting Dates 1.14 Rounding Date Objects 1.15 Truncating Date Objects 1.16 Creating an Enum 1.17 Generating Unique Numeric Identifiers 1.18 Validation of Method Parameters 1.19 Measuring Time 2. Manipulating Text 2.1 Setting Up StringUtils and WordUtils 2.2 Checking for an Empty String 2.3 Abbreviating Strings 2.4 Splitting a String 2.5 Finding Nested Strings 2.6 Stripping and Trimming a String 2.7 Chomping a String 2.8 Creating an Emphasized Header 2.9 Reversing a String 2.10 Wrapping Words 2.11 Testing the Contents of a String 2.12 Measuring the Frequency of a String; 2.13 Parsing Formatted Strings 2.14 Calculating String Difference 2.15 Using Commons Codec 2.16 Getting the Commons Codec Source Code 2.17 Calculating Soundex 3. JavaBeans; 3.1 Representing Beans Graphically 3.2 Obtaining Commons BeanUtils 3.3 Getting the Commons BeanUtils Source Code 3.4 Accessing Simple Bean Properties 3.5 Accessing Nested Bean Properties 3.6 Accessing Indexed Bean Properties 3.7 Accessing Mapped Bean Properties 3.8 Accessing a Simple, Nested, Indexed, and Mapped Bean Property 3.9 Determining the Type of a Bean Property 3.10 Comparing Beans 3.11 Copying Bean Properties 3.12 Cloning a Bean 3.13 Setting a Bean Property; 3.14 Testing Property Access 3.15 Validating Beans with Predicates 3.16 Creating a Map of Bean Properties 3.17 Wrapping a Bean with a Map 3.18 Creating a Dynamic Bean 3.19 Getting and Setting Properties as Strings 4. Functors 4.1 Obtaining Commons Collections 4.2 Getting the Commons Collections Source Code; 4.3 Reversing a Comparator 4.4 Chaining Comparators 4.5 Comparing Nulls 4.6 Fixed-Order Comparison 4.7 Using Simple Predicates 4.8 Writing a Custom Predicate 4.9 Creating Composite Predicates 4.10 Transforming Objects 4.11 Creating a Chain of Transformations 4.12 Applying Conditional Transformations 4.13 Writing a Closure 4.14 Chaining Closures 4.15 Modeling Conditional Statements with Closures; 4.16 Modeling Loops with Closures 5. Collections 5.1 Obtaining Commons Collections 5.2 Using a Looping Iterator 5.3 Iterating Over an ArrayList 5.4 Filtering a Collection with a Predicate 5.5 Iterating Through Distinct Elements 5.6 Using a Bag 5.7 Using a Buffer 5.8 Creating a Priority Queue 5.9 Using a Blocking Buffer 5.10 Storing Multiple Values in a Map; 5.11 Retrieving a Key by a Value 5.12 Using a Case-Insensitive Map 5.13 Creating Typed Collections and Maps 5.14 Constraining Map Values 5.15 Constraining List Contents 5.16 Transforming Collections 5.17 Creating a Least Recently Used Cache 5.18 Using a Lazy Map 5.19 Counting Objects in a Collection 5.20 Performing Set Operations 5.21 Retrieving Map Values Without Casting 6. XML 6.1 Obtaining Jakarta Commons Digester 6.2 Turning XML Documents into Objects 6.3 Namespace-Aware Parsing; 6.4 Creating a Simple XML Command Language 6.5 Variable Substitution and XML Parsing 6.6 Obtaining Jakarta Commons Betwixt 6.7 Turning Beans into XML Documents 6.8 Customizing XML Generated from an Object 6.9 Turning XML Documents into Beans 7. Application Infrastructure 7.1 Obtaining Commons CLI; 7.2 Parsing a Simple Command Line 7.3 Parsing a Complex Command Line 7.4 Printing Usage Information 7.5 Obtaining Commons Configuration 7.6 Configuring Applications with Properties Files; 7.7 Configuring Applications with XML 7.8 Using Composite Configuration 7.9 Obtaining Commons Logging 7.10 Using an Abstract Logging Interface 7.11 Specifying a Logging Implementation 7.12 Obtaining Apache Log4J 7.13 Configuring Log4J with a Properties File 7.14 Configuring Log4J with XML; 8. Math 8.1 Using Fractions 8.2 Finding the Maximum and Minimum in an Array 8.3 Using Number Ranges 8.4 Generating Random Variables 8.5 Obtaining Commons Math 8.6 Calculating Simple Univariate Statistics 8.7 Solving a System of Linear Equations 8.8 Arithmetic with Complex Numbers 8.9 Establishing Relationships Between Variables 8.10 Estimating the Amount of Time Left in a Process 9. Templating 9.1 Obtaining Commons JEXL 9.2 Using an Expression Language 9.3 Invoking Methods in an Expression 9.4 Externalizing Logic with an Expression Language 9.5 Obtaining Jakarta Velocity 9.6 Using a Simple Templating Language 9.7 Writing Templates with Conditionals and Loops 9.8 Using Macros in a Templating Engine 9.9 Invoking Methods in a Template 9.10 Obtaining FreeMarker 9.11 Using a Complex Scripting Engine 9.12 Accessing XML Documents from a Templating Engine 9.13 Using Velocity in a Web Application; 9.14 Using FreeMarker in a Web Application 9.15 Writing Templates in Eclipse 10. I/O and Networking 10.1 Obtaining Commons IO; 10.2 Copying Streams, byte[ ], Readers, and Writers 10.3 Closing Streams, Readers, and Writers 10.4 Printing a Human-Readable File Size 10.5 Copying Files, Strings, and URLs 10.6 Deleting Directories Recursively 10.7 Obtaining the Size of a Directory; 10.8 Touching a File 10.9 Filtering Files 10.10 Measuring Stream Traffic 10.11 Splitting an OutputStream 10.12 Obtaining Jakarta ORO 10.13 Using Globs and Perl5 Regular Expressions to List Files 10.14 Obtaining Commons Net 10.15 Writing an FTP Client 10.16 Sending Mail with SMTP 10.17 Checking a POP3 Mailbox 11. HTTP and WebDAV 11.1 Obtaining Jakarta HttpClient; 11.2 Getting Jakarta HttpClient Source Code 11.3 Performing an HTTP GET 11.4 Sending Parameters in a Query String 11.5 Retrieving Content with a Conditional GET 11.6 Debugging HTTP Communications 11.7 Making an HTTP POST Request 11.8 Sending POST Data from a File 11.9 Uploading Files with a Multipart POST 11.10 Basic Authentication 11.11 NTLM Authentication; 11.12 Working with Cookies 11.13 Handling Redirects 11.14 SSL 11.15 Accepting a Self-Signed Certificate 11.16 Obtaining Jakarta Slide 11.17 Connecting to WebDAV Resources 11.18 Modifying a WebDAV Resource 12. Searching and Filtering; 12.1 Obtaining Commons JXPath 12.2 Querying an Object Graph with XPath 12.3 Search a Collection of Simple Objects 12.4 Applying XPath Queries to Complex Object Graphs 12.5 Obtaining Jakarta Lucene 12.6 Creating an Index of XML Documents; 12.7 Searching for a Specific Term in a Document Index 12.8 Finding the Frequency of Terms in an Index Index