SlideShare a Scribd company logo
Submit Search
Upload
Declarative input validation with JSR 303 and ExtVal
Report
Bart Kummel
Software Engineer at Transfer Solutions
Follow
•
0 likes
•
1,574 views
1
of
32
Declarative input validation with JSR 303 and ExtVal
•
0 likes
•
1,574 views
Download Now
Download to read offline
Report
Technology
Slides of my session at J-Fall 2010
Read more
Bart Kummel
Software Engineer at Transfer Solutions
Follow
Recommended
Declarative Input Validation with JSR 303 and ExtVal
Bart Kummel
1.4K views
•
32 slides
Unit testing (eng)
Anatoliy Okhotnikov
1.3K views
•
35 slides
XPDays Ukraine: Legacy
Victor_Cr
7.5K views
•
27 slides
Php unit (eng)
Anatoliy Okhotnikov
1.1K views
•
16 slides
What is Java Technology (An introduction with comparision of .net coding)
Shaharyar khan
1.1K views
•
46 slides
Realtime selenium interview questions
Kuldeep Pawar
21.5K views
•
84 slides
More Related Content
What's hot
Android Test Driven Development
Arif Huda
646 views
•
15 slides
Top 20 basic java interview questions for SDET
DevLabs Alliance
86 views
•
22 slides
Is TDD Dead?
Kihoon Kim
210 views
•
95 slides
Lecture java basics
eleksdev
3.7K views
•
23 slides
Refactoring
Mikalai Alimenkou
5.5K views
•
34 slides
Top 20 Junit interview questions for sdet
DevLabs Alliance
43 views
•
22 slides
What's hot
(20)
Android Test Driven Development
Arif Huda
•
646 views
Top 20 basic java interview questions for SDET
DevLabs Alliance
•
86 views
Is TDD Dead?
Kihoon Kim
•
210 views
Lecture java basics
eleksdev
•
3.7K views
Refactoring
Mikalai Alimenkou
•
5.5K views
Top 20 Junit interview questions for sdet
DevLabs Alliance
•
43 views
Top 20 cucumber interview questions for sdet
DevLabs Alliance
•
51 views
TDD And Refactoring
Naresh Jain
•
7.4K views
Core java
Mallikarjuna G D
•
628 views
Dev labs alliance top 20 basic java interview questions for sdet
DevLabs Alliance
•
49 views
Working Effectively With Legacy Code
Naresh Jain
•
56.3K views
Selenium interview-questions-freshers
Naga Mani
•
347 views
May 05 test_code_states
KyungHo Jung
•
164 views
CICD 맛보기
Kihoon Kim
•
1.5K views
Building a web application with ontinuation monads
Seitaro Yuuki
•
295 views
Unit testing legacy code
Lars Thorup
•
2K views
Top 20 software testing interview questions for sdet
DevLabs Alliance
•
86 views
DevLabs Alliance Top 50 Selenium Interview Questions for SDET
DevLabs Alliance
•
121 views
DevLabs Alliance Top 20 Software Testing Interview Questions for SDET - by De...
DevLabs Alliance
•
95 views
Efficient JavaScript Unit Testing, JavaOne China 2013
Hazem Saleh
•
2.9K views
Similar to Declarative input validation with JSR 303 and ExtVal
Apache MyFaces 1.2 Web Application Development
Bart Kummel
564 views
•
23 slides
How do I test these new mobile applications, and how does CA Application Test...
Ian Kelly
603 views
•
16 slides
Resume_sindhu
Sindhu B
163 views
•
4 slides
Manual testing interview questions
BABAR MANZAR
372 views
•
23 slides
Building Mobile Friendly APIs in Rails
Jim Jeffers
2.8K views
•
110 slides
Improving Software Quality- 2-day Tester Training
Anna Russo
2.1K views
•
63 slides
Similar to Declarative input validation with JSR 303 and ExtVal
(20)
Apache MyFaces 1.2 Web Application Development
Bart Kummel
•
564 views
How do I test these new mobile applications, and how does CA Application Test...
Ian Kelly
•
603 views
Resume_sindhu
Sindhu B
•
163 views
Manual testing interview questions
BABAR MANZAR
•
372 views
Building Mobile Friendly APIs in Rails
Jim Jeffers
•
2.8K views
Improving Software Quality- 2-day Tester Training
Anna Russo
•
2.1K views
BDD and Test Automation in Evalutionary Product Suite
Lasantha Ranaweera
•
974 views
JCON_15FactorWorkshop.pptx
Grace Jansen
•
45 views
Manual testing interview question by INFOTECH
Pravinsinh
•
305.4K views
Using DevOps to Improve Software Quality in the Cloud
TechWell
•
377 views
Integration testing.
DrSimoneDiCola
•
14 views
Salesforce API Series: Release Management with the Metadata API webinar
Salesforce Developers
•
16.1K views
Journey toward3rdplatform
Tzung-Hsien (Shawn) Ho
•
222 views
Unit Testing Fundamentals
Richard Paul
•
4K views
Manual testing interview questions by infotech
suhasreddy1
•
46K views
Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01
Anshuman Rai
•
5.2K views
Manual testings interview question and answer
prasad keluskar
•
291 views
VAST 7.5 and Beyond
ESUG
•
3.2K views
Continuous Everything
Andrea Tino
•
553 views
Jbossworld Presentation
Dan Hinojosa
•
449 views
Recently uploaded
Astera Labs: Intelligent Connectivity for Cloud and AI Infrastructure
CXL Forum
125 views
•
16 slides
"Fast Start to Building on AWS", Igor Ivaniuk
Fwdays
34 views
•
76 slides
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
Fwdays
39 views
•
31 slides
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10
94 views
•
20 slides
PyCon ID 2023 - Ridwan Fadjar Septian.pdf
Ridwan Fadjar
165 views
•
45 slides
Throughput
Moisés Armani Ramírez
31 views
•
11 slides
Recently uploaded
(20)
Astera Labs: Intelligent Connectivity for Cloud and AI Infrastructure
CXL Forum
•
125 views
"Fast Start to Building on AWS", Igor Ivaniuk
Fwdays
•
34 views
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
Fwdays
•
39 views
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10
•
94 views
PyCon ID 2023 - Ridwan Fadjar Septian.pdf
Ridwan Fadjar
•
165 views
Throughput
Moisés Armani Ramírez
•
31 views
The Research Portal of Catalonia: Growing more (information) & more (services)
CSUC - Consorci de Serveis Universitaris de Catalunya
•
59 views
Liqid: Composable CXL Preview
CXL Forum
•
120 views
JCon Live 2023 - Lice coding some integration problems
Bernd Ruecker
•
62 views
Java 21 and Beyond- A Roadmap of Innovations .pdf
Ana-Maria Mihalceanu
•
54 views
Data-centric AI and the convergence of data and model engineering:opportunit...
Paolo Missier
•
25 views
Five Things You SHOULD Know About Postman
Postman
•
22 views
TE Connectivity: Card Edge Interconnects
CXL Forum
•
95 views
METHOD AND SYSTEM FOR PREDICTING OPTIMAL LOAD FOR WHICH THE YIELD IS MAXIMUM ...
Prity Khastgir IPR Strategic India Patent Attorney Amplify Innovation
•
24 views
.conf Go 2023 - Many roads lead to Rome - this was our journey (Julius Bär)
Splunk
•
188 views
CXL at OCP
CXL Forum
•
203 views
Business Analyst Series 2023 - Week 2 Session 3
DianaGray10
•
319 views
MemVerge: Past Present and Future of CXL
CXL Forum
•
110 views
"How we switched to Kanban and how it integrates with product planning", Vady...
Fwdays
•
60 views
Samsung: CMM-H Tiered Memory Solution with Built-in DRAM
CXL Forum
•
101 views
Declarative input validation with JSR 303 and ExtVal
1.
WWW.TRANSFER-SOLUTIONS.COM SPREKER : E-MAIL : DATUM
: Declarative input validation with JSR 303 and ExtVal BART KUMMEL BKUMMEL@TRANSFER-SOLUTIONS.COM 3 NOVEMBER 2010
2.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 2 Who am I? Bart Kummel Nearly 10 years experience in software development Of which 5 years in Java EE Consultant @ Transfer Solutions Competence Manager Java EE @ Transfer Solutions Author of Apache MyFaces 1.2 Web Application Development See http://tinyurl.com/am12wad
3.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 3Photo: Salar de Uyuni, Bolivia; © 2010 by Bart KummelPhoto: Salar de Uyuni, Bolivia; © 2010 by Bart Kummel
4.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 4 Don’t Repeat Yourself Less code = less bugs Duplicated code = duplicated bugs Duplicated code = duplicated maintenance Dupliacted maintenance = forgotten maintenance
5.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 5 DRY violations in classic Java EE apps Validation is programmed in Model beans Because that’s where it belongs Validation is repeated in View layer Because you have to use JSF Validators Validation is even repeated multiple times in the View Because the same bean is used in multiple JSF pages
6.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 6 Remove validation code from View Let View generate validation based on Model Let’s fix this How to fix it? That’s why Bean Validation (JSR 303) was created
7.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 7 JSR 303: the idea Standardized way to express validation constraints Any UI technology can interpret those constraints and enforce them Non-UI technologies can also use the validation information
8.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 8 JSR 303: the idea implemented JSR 303 is part of Java EE 6 The reference implementation is Hibernate Validator 4.* See http://hibernate.org/subprojects/validator.html Hibernate Validator 4.* can also be used in Java EE 5 A JSR 303 implementation is only the way to express the validation constraints You don’t get UI validation logic if the UI framework doesn’t support JSR 303
9.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 9 Bean Validation in Java EE 5 Add Hibernate Validator 4.* as library ...and some extra libraries, provided in the Hibernate Validator package Use JSR 303 annotations in your beans Use MyFaces ExtVal 1.2.* to add declarative validation support to JSF 1.2
10.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 10 Bean Validation in Java EE 6 No need to add a JSR 303 implementation JSR 303 is part of the Java EE 6 platform Use JSR 303 annotations in your beans JSF 2.0 has support for JSR 303 annotations out of the box But support is limited You can (and should!) still use ExtVal (2.0.*) and get lots of benefits (more on that later)
11.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 11 Side note: ExtVal versioning There are three current versions of ExtVal 1.1.* for JSF 1.1 1.2.* for JSF 1.2 2.0.* for JSF 2.0 The latest stable release is release 3 That is: 1.1.3, 1.2.3 and 2.0.3 Lots of exciting new stuff is going into the next version Snapshot releases of ExtVal are very high quality
12.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 12 Example: classic validation code in bean @Min(0) @Max(100000) private int capacity; public void setCapacity(int capacity) { if(capacity >= 0 && capacity <= 100000) { this.capacity = capacity; } else { // throw exception } }
13.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 13 Example: JSR 303 annotations @Min(0) @Max(100000) private int capacity; public void setCapacity(int capacity) { this.capacity = capacity; } Extra benefits: – less code – better readable
14.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 14 Example: classic validation in JSF page <h:inputText value="#{room.capacity}" > <f:validateLongRange minimum = "0" maximum = "100000" /> </h:inputText>
15.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 15 Example: no validation in JSF page! <h:inputText value="#{room.capacity}" /> Benefits: – less code – DRY!
16.
16 WWW.TRANSFER-SOLUTIONS.COM Demo 1: Bean Validation
basics in Java EE 6
17.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 17 So why do we need ExtVal? To use Bean Validation in Java EE 5 / JSF 1.2 To have advanced options in Java EE 6
18.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 18 ExtVal on Java EE 6: advanced options Cross validation Violation severity i.o.w. give warnings instead of errors More flexibility in choice of annotations to use JSR 303, JPA, ExtVal, own annotation or any combination Customization on all levels, e.g.: Custom message resolvers Custom validation strategies Custom meta data demos coming up!
19.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 19 Configuring ExtVal Just add the ExtVal .jar files to your project
20.
20 WWW.TRANSFER-SOLUTIONS.COM Demo 2: Adding the
ExtVal .jar files to our project
21.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 21 Cross validation Examples of cross validation check if two values are equal check if date is before or after other date value is only required if other value is empty (or not) etcetera...
22.
22 WWW.TRANSFER-SOLUTIONS.COM Demo 3: Cross validation
23.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 23 Demo 3 – Summary @DateIs can be used for date-related cross validations Use DateIsType.before, DateIsType.after or DateIsType.same Other cross validation annotations: @Equals and @NotEquals for equality-based cross validation of any type @RequiredIf for conditional required fields Use RequiredIfType.empty or RequiredIfType.not_empty
24.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 24 Violation severity Give certain validation rules a severity level of “warning” A warning will be given to the user, but “invalid” data can be submitted
25.
25 WWW.TRANSFER-SOLUTIONS.COM Demo 4: Setting violation
severity to “warning”
26.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 26 Demo 4 – summary Violation severity is not part of the JSR 303 standard We use payload to add violation severity level as custom meta data JPA also interprets JSR 303 contraints before persisting data, but does not recognise violation severity Solution: use ExtVal annotations instead
27.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 27 Customization on all levels ExtVal is full of customization hooks A lot of ready-made add-ons are available see http://os890.blogspot.com
28.
28 WWW.TRANSFER-SOLUTIONS.COM Demo 5: Creating
a custom annotation and a custom validation strategy
29.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 29 Demo 5 – summary Technically, creating a custom annotation is not an ExtVal feature It is just a Java feature We need an ExtVal validation strategy to make a custom annotation work We need to map our annotation to our validation strategy We can create a startup listener for this As an alternative we can use ExtVal plugins to use alternative ways of configuration
30.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 30 Summary With annotation based valition, we can finally create DRY JSF applications ExtVal gives us the opportunity to use annotation-based validation on Java EE 5 On Java EE 6, ExtVal gives us: More powerful annotation-based validation More flexibility
31.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 31 More info... I will put links to slides & demo code on my blog http://www.bartkummel.net Chapter 10 of MyFaces 1.2 Web Application Development http://tinyurl.com/am12wad MyFaces ExtVal: http://myfaces.apache.org/extensions/validator http://os890.blogspot.com/
32.
© COPYRIGHT TRANSFER
SOLUTIONS B.V. 32 &Q u e s t i o n s A n s w e r s CONSULTING | MANAGED SERVICES | EDUCATION WWW.TRANSFER-SOLUTIONS.COM