Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Programming Grails
Programming Grails
Burt Beckwith
Special Upgrade Offer
Preface
Who This Book Is For
Other Resources
Conventions Used in This Book
Tip
Warning
Using Code Examples
Safari® Books Online
Note
How to Contact Us
Acknowledgments
Chapter 1. Introduction to Groovy
Installing Groovy
Groovy Console
Optional Typing
Collections and Maps
Properties
Warning
Using the AST Browser
Decompiling with JD-GUI
Decompiling with javap
Closures
Interface Coercion
Programmatic Closures
Owner, Delegate, and this
Groovy’s Contributions in the War Against Verbosity
Constructors
Checked Exceptions
Groovy Truth
Semicolons
Optional Return
Scope
Parentheses
Default Imports
Differences Between Java and Groovy
Array Initialization
in and def Keywords
do/while Loops
for Loops
Annotations
Groovy Equality
Multimethod Dispatch
Groovy Strings
Static this
The Groovy JDK (GDK)
DefaultGroovyMethods and InvokerHelper
Metaprogramming and the MOP
Note
Adding Methods
Intercepting Method Calls
getProperty and setProperty
methodMissing and propertyMissing
Operators
Null-Safe Dereference
Elvis
Spread
Spaceship
Field Access
as
in
Method Reference
Overload Your Operators
Being Too Groovy
def Considered Harmful
Closures Versus Methods
TypeChecked, CompileStatic, and invokedynamic
Chapter 2. Grails Internals
Installing Grails
Creating an Application
A nte about the work directory
Running the application
The Grails Command Line
IDE Support
Plugins
Note
Optional Plugins
The cache plugin
The database-migration plugin
The hibernate plugin
The jquery plugin
The resources plugin
The tomcat plugin
The webxml plugin
Core Plugins
The codecs plugin
Note
The controllers plugin
The converters plugin
The core plugin
The dataSource plugin
The domainClass plugin
The filters plugin
The groovyPages plugin
The i18n plugin
The logging plugin
The mimeTypes plugin
The scaffolding plugin
The services plugin
The servlets plugin
The urlMappings plugin
The validation plugin
Conventions
Controller and View Conventions
Data binding conventions
Layout conventions
URI conventions
Service Conventions
Domain Class Conventions
More Information
Chapter 3. Persistence
Data Mapping
Nonpersistent Domain Classes
Data Validation
Custom Validation
Note
Note
Extreme Custom Validation
Validation Plugins
Friendly Error Messages
Blanks Versus Nulls
Transients
Mapping Collections
Querying
Saving, Updating, and Deleting
NoSQL Support
Chapter 4. Spring
Inversion of Control and Dependency Injection
Complex Dependency Configuration Using Spring SpEL
Manually Injecting Dependencies at Runtime
Bean Scopes
Transactional Services
@Transactional
Transaction Proxies
Unintentionally bypassing the bean proxy
Transaction Utility Methods
Bean Life Cycles and Interfaces
Note
Bean Postprocessors
Note
A Groovier Way
Bean Aliases
Note
Internationalization
Resources
Resource Dependency Injection
ResourceLocator
Data Binding and Validation
Data Binding
Validation
Database Persistence
Thread-Local Holders
JdbcTemplate
Other Database Support
Spring MVC
Filters
Note
Using Spring MVC Controllers
Remoting
Client Access
JMS
EJBs
JMX
Email
Cache Abstraction
Chapter 5. Hibernate
Mapping Domain Classes
Note
Note
Dialects
Dialect Autodetection
Dialect Customization
Hibernate Without GORM
hibernate.cfg.xml
HibernateUtil
Author
Book
Experimenting with the APIs
The Session
withSession
withNewSession
Open Session in View
Disabling OSIV
Custom User Types
Optimistic and Pessimistic Locking
Accessing the Session’s Connection
schema-export
SQL Logging
Proxies
equals, hashCode, and compareTo
Caching
Examples
Caching API
evicting
Note
Accessing caches
Query Caching Considered Harmful?
HQL
executeQuery
Query Syntax
Report Queries
Single properties
Multiple properties
new list
Aggregate Functions
Expressions
Collections
Collections Performance
The Solution
Session.createFilter()
Custom Configurations
Mapping Views and Subselect Classes
Subselect Domain Classes
Selecting with a POGO
get(), load(), and read()
get()
load()
read()
Performance
Caching
Lazy Loading
Transactional Write-Behind
Chapter 6. Integration
JMS
XA Support with the Atomikos Plugin
Mail
Sending Email
Sending Email Asynchronously
Sending Email from Log4j
Testing
SOAP Web Services
The Server Application
The Client Application
TCPMon
REST
TCPMon
JMX
Chapter 7. Configuration
External config Files
Loading the Configuration
Partitioning Config Files
Splitting resources.groovy
Modularizing Within resources.groovy
Environment-Specific Spring Beans
Beans Closures in Config.groovy
Options for BuildConfig.groovy
Adding Additional Source Folders
Extra Folders Under grails-app
Chapter 8. Plugins
Creating a Plugin
Initial Steps
The Plugin Descriptor
Metadata
Life Cycle Callbacks
Note
doWithWebDescriptor
doWithSpring
doWithDynamicMethods
doWithApplicationContext
onChange
onConfigChange
onShutdown
Note
Splitting Applications into Plugins
Inline Plugins
Building and Releasing
Automated Testing
A mini DSL to describe versions
Continuous integration
Testing scripts
Running the Tests
Custom Plugin Repositories
Plugin Documentation
Custom Artifacts
Some Notes on Plugin Development Workflow
Chapter 9. Security
OWASP
A1: Injection
Command injection
A2: Cross-Site Scripting (XSS)
Remedies
Best practices
A3: Broken Authentication and Session Management
A4: Insecure Direct Object References
Remedies
A5: Cross-Site Request Forgery
Remedies
A6: Security Misconfiguration
Remedies
A7: Insecure Cryptographic Storage
Best practices
A8: Failure to Restrict URL Access
A9: Insufficient Transport Layer Protection
A10: Unvalidated Redirects and Forwards
Security Plugins
spring-security-core
Getting started
Access control
Other Plugins and Libraries
AntiSamy
ESAPI
HDIV
General Best Practices
Chapter 10. The Cloud
Cost Savings
What You Give Up
Cloud Foundry
Database Applications
Creating an application
Warning
Note
Scaling
HTTP sessions
NoSQL, RabbitMQ, and Searchable
Monitoring and the Cloud Foundry UI Plugin
The cloud-foundry-ui Plugin
Heroku
Database Applications
Creating an application
Scaling
HTTP sessions
Build Packs
Other Providers
Other Uses for Cloud Services
Chapter 11. AOP
Grails Filters
Note
HTTP Filters
Groovy AOP
Registering Metaclass Interceptors
Note
Error Code URL Mappings
Spring AOP
Enabling Spring AOP
Defining AspectJ-Annotated Aspects
Note
Compile-Time Weaving
Chapter 12. Upgrading Applications and Plugins
Why Doesn’t the Upgrade Script Do More?
A General Approach to Upgrading
Upgrading Petclinic: A Case Study
Step 1: Determine the changes in the application
Step 2: Make the first round of changes in a new application
Step 3: Make the second round of changes
Note
Step 4: Finishing up
Running the upgrade script instead
A Short History of Grails
Grails 1.2
Grails 1.2.2
Grails 1.2.4
Grails 1.3
Grails 1.3.1
Grails 1.3.2
Grails 1.3.4
Grails 1.3.6
Grails 1.3.7
Grails 1.3.8
Grails 1.3.9
Grails 2.0
Grails 2.0.2
Grails 2.1.x
Grails 2.2.x
Notes on Upgrading
Index
A note on the digital index
Symbols
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
Q
R
S
T
U
V
W
X
Z
About the Author
Colophon
Special Upgrade Offer
Programming Grails
Burt Beckwith
Editor
Meghan Blanchette
Editor
Mike Loukides
← Prev
Back
Next →
← Prev
Back
Next →