• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Geprüfte Bohne - Der Bean Validation Standard
 

Geprüfte Bohne - Der Bean Validation Standard

on

  • 1,629 views

 

Statistics

Views

Total Views
1,629
Views on SlideShare
1,629
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Synchronität Constraints ↔ Dokumentation\n Komplexität\n\n
  • Java!\n
  • Java!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Beispiele!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Demo PersonTest\n
  • gleiches Beispiel verwenden\n
  • gleiches Beispiel verwenden\n
  • gleiches Beispiel verwenden\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • @Constrain Klammer prüfen\n
  • @Constrain Klammer prüfen\n
  • @Constrain Klammer prüfen\n
  • @Constrain Klammer prüfen\n
  • BeanValidator beispiel\n
  • \n
  • \n

Geprüfte Bohne - Der Bean Validation Standard Geprüfte Bohne - Der Bean Validation Standard Presentation Transcript

  • © http://philowendeltreppe.wordpress.com/GEPRÜFTE BOHNE Der Bean Validation Standard Sandro Sonntag 1 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit• Existierende Lösungen © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit• Existierende Lösungen• Der JSR 303 © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit• Existierende Lösungen• Der JSR 303• JSR 303 Implementierungen © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit • Constraints Deklarieren• Existierende Lösungen• Der JSR 303• JSR 303 Implementierungen © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit • Constraints Deklarieren• Existierende Lösungen • Gruppierungen• Der JSR 303• JSR 303 Implementierungen © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit • Constraints Deklarieren• Existierende Lösungen • Gruppierungen• Der JSR 303 • Messages• JSR 303 Implementierungen © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit • Constraints Deklarieren• Existierende Lösungen • Gruppierungen• Der JSR 303 • Messages• JSR 303 Implementierungen • Eigene Constraints © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Bedarf und Notwendigkeit • Constraints Deklarieren• Existierende Lösungen • Gruppierungen• Der JSR 303 • Messages• JSR 303 Implementierungen • Eigene Constraints • Metadaten lesen © delater / PIXELIODer Bean Validation Standard JSR 303 2 Sandro Sonntag © Adorsys GmbH & Co KG
  • WARUM VALIDIERUNG? © Ernst Rose / PIXELIODer Bean Validation Standard JSR 303 3 Sandro Sonntag © Adorsys GmbH & Co KG
  • WARUM VALIDIERUNG?• Validierung • Prüfung von Thesen • Sicherstellung der Datenqualität • Misstrauen des Nutzers • Prävention zur Vermeidung von Fehlern © Ernst Rose / PIXELIODer Bean Validation Standard JSR 303 3 Sandro Sonntag © Adorsys GmbH & Co KG
  • WARUM VALIDIERUNG?• Validierung • Prüfung von Thesen • Sicherstellung der Datenqualität • Misstrauen des Nutzers • Prävention zur Vermeidung von Fehlern• Sicherheits-Belange • Constraints © Ernst Rose / PIXELIO • Regeln der Prüfung • NotNull, Min, Max, LengthDer Bean Validation Standard JSR 303 3 Sandro Sonntag © Adorsys GmbH & Co KG
  • Webservice Browser Richclient Java Application Präsentation Business DAO RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application Präsentation Business DAO RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application Präsentation Business DAO RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application Präsentation Business DAO RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application Präsentation Business DAO RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO Taglib RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO Taglib RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO Taglib WSDL RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO Taglib WSDL RDBM CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO Taglib WSDL RDBM DDL CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO Taglib WSDL RDBM DDL CONSTRAINTS IN TIERS 4
  • Webservice Browser Richclient Java Java Application JavaScript Präsentation Business DAO Taglib WSDL RDBM DDL CONSTRAINTS IN TIERS•Gleiche Prüfungen über alle Schichten•(meist) ein Model 4
  • AKTUELLE LÖSUNGEN Java Server Faces <h:inputText id="firstName" value="#{UserRegistration.user.firstName}"> <f:validateLength minimum="2" maximum="25" /> </h:inputText> public void validateEmail(FacesContext context, UIComponent toValidate, Object value) { String email = (String) value; if (email.indexOf(@) == -1) { ((UIInput) toValidate).setValid(false); FacesMessage message = new FacesMessage("Invalid Email"); context.addMessage(toValidate.getClientId(context), message); } }Der Bean Validation Standard JSR 303 5 Sandro Sonntag © Adorsys GmbH & Co KG
  • POJO & DDL public void check(Address a) { if (a.getStreet() == null || a.getStreet().length() > 60) { throw new ValidationException("Street has not a valid value!"); } }Der Bean Validation Standard JSR 303 6 Sandro Sonntag © Adorsys GmbH & Co KG
  • POJO & DDL public void check(Address a) { if (a.getStreet() == null || a.getStreet().length() > 60) { throw new ValidationException("Street has not a valid value!"); } } create table LOGIN ( id bigint not null auto_increment, login varchar(255) not null, name varchar(255) not null, password varchar(255) not null, primary key (id));Der Bean Validation Standard JSR 303 6 Sandro Sonntag © Adorsys GmbH & Co KG
  • NACHTEILE• Layerspezifische Validierungs Technologien• Code Duplizierung• Inkonsistenz• Verstreuung über den CodeDer Bean Validation Standard JSR 303 7 Sandro Sonntag © Adorsys GmbH & Co KG
  • BESSER WÄHRE DOCH © Ernst Rose / PIXELIODer Bean Validation Standard JSR 303 8 Sandro Sonntag © Adorsys GmbH & Co KG
  • BESSER WÄHRE DOCH• Einheitliche Deklaration der Constaints • In einer Sprache • Layer agnostisch © Ernst Rose / PIXELIODer Bean Validation Standard JSR 303 8 Sandro Sonntag © Adorsys GmbH & Co KG
  • BESSER WÄHRE DOCH• Einheitliche Deklaration der Constaints • In einer Sprache • Layer agnostisch• Validierung der Constraints • Durch wiederverwendbares API • In allen Schichten verwendbar © Ernst Rose / PIXELIODer Bean Validation Standard JSR 303 8 Sandro Sonntag © Adorsys GmbH & Co KG
  • DEKLARATIONDer Bean Validation Standard JSR 303 9 Sandro Sonntag © Adorsys GmbH & Co KG
  • DEKLARATION• Javadoc → Liest niemandDer Bean Validation Standard JSR 303 9 Sandro Sonntag © Adorsys GmbH & Co KG
  • DEKLARATION• Javadoc → Liest niemand• XML Konfiguration → zu weit vom CodeDer Bean Validation Standard JSR 303 9 Sandro Sonntag © Adorsys GmbH & Co KG
  • DEKLARATION• Javadoc → Liest niemand• XML Konfiguration → zu weit vom Code• Taglib → Layer spezifischDer Bean Validation Standard JSR 303 9 Sandro Sonntag © Adorsys GmbH & Co KG
  • DEKLARATION• Javadoc → Liest niemand• XML Konfiguration → zu weit vom Code• Taglib → Layer spezifisch• @Annotation →Dicht am Code →Java!Der Bean Validation Standard JSR 303 9 Sandro Sonntag © Adorsys GmbH & Co KG
  • FRAMEWORKS HEUTEDer Bean Validation Standard JSR 303 10 Sandro Sonntag © Adorsys GmbH & Co KG
  • FRAMEWORKS HEUTE• Apache Commons Validator• JSF Validator• Xwork• Hibernate Validator• MyFaces ValidationDer Bean Validation Standard JSR 303 10 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303Der Bean Validation Standard JSR 303 11 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Standardisieren von Constraints • Annotations • Implementierung eigener ConstraintsDer Bean Validation Standard JSR 303 11 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Standardisieren von Constraints • Annotations • Implementierung eigener Constraints• Validierungs API • Layerunabhängig • I18n • Extension PointsDer Bean Validation Standard JSR 303 11 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Standardisieren von • Standardisierung der Constraints Metadata API • Annotations • Implementierung eigener Constraints• Validierungs API • Layerunabhängig • I18n • Extension PointsDer Bean Validation Standard JSR 303 11 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Standardisieren von • Standardisierung der Constraints Metadata API • Annotations • Integration anderer • Implementierung eigener Frameworks Constraints• Validierungs API • Layerunabhängig • I18n • Extension PointsDer Bean Validation Standard JSR 303 11 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Standardisieren von • Standardisierung der Constraints Metadata API • Annotations • Integration anderer • Implementierung eigener Frameworks Constraints • XML Konfiguration• Validierungs API • Layerunabhängig • I18n • Extension PointsDer Bean Validation Standard JSR 303 11 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303Der Bean Validation Standard JSR 303 12 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Status • Proposed Final Draft (30 März, 2009) • RI in Glassfish V3Der Bean Validation Standard JSR 303 12 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Status • Proposed Final Draft (30 März, 2009) • RI in Glassfish V3• Spec Lead: Emmanuel BernardDer Bean Validation Standard JSR 303 12 Sandro Sonntag © Adorsys GmbH & Co KG
  • JSR 303• Status • Proposed Final Draft (30 März, 2009) • RI in Glassfish V3• Spec Lead: Emmanuel Bernard• Implementierungen • Hibernate Validator (RI) • Agimatec ValidationDer Bean Validation Standard JSR 303 12 Sandro Sonntag © Adorsys GmbH & Co KG
  • AGENDA• Constraints Deklarieren• Gruppierungen• Messages• Eigene Constraints• Metadaten lesenDer Bean Validation Standard JSR 303 13 Sandro Sonntag © Adorsys GmbH & Co KG
  • CONSTRAINTS DEKLARIEREN• Basierend auf Java Annotations • Class, Getter, Setter @NotNull private String firstname; • Kreuzplausibilisierungen• Anpassbarkeit • Gruppen @Valid @NotNull(groups = First.class) private Author author; • Messages • Eigene ParameterDer Bean Validation Standard JSR 303 14 Sandro Sonntag © Adorsys GmbH & Co KG
  • public class Person { @NotEmpty @NotNull private String firstname; @NotEmpty @Size(min=3, max=30, message="The size of lastname must be between {min} and {max}") private String lastname; @NotNull @Valid private Address address; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; }Der Bean Validation Standard JSR 303 } 15 Sandro Sonntag © Adorsys GmbH & Co KG
  • ANNOTATIONSDer Bean Validation Standard JSR 303 16 Sandro Sonntag © Adorsys GmbH & Co KG
  • •Logik •Fachlich •@NotNull •@Email •@NotEmpty •@EAN •@AssertTrue / False •@CreditCard •Wertebereich •Andere •@Min •@Valid •@Max •@Pattern •@Digits •@Size ANNOTATIONSDer Bean Validation Standard JSR 303 16 Sandro Sonntag © Adorsys GmbH & Co KG
  • NÜTZLICHE DINGE• Muilti Constraints • @Patterns({@Pattern(regexp=“???“)})• Vererbung • Superclass • Interface • Additiv• Collections, Maps, ArraysDer Bean Validation Standard JSR 303 17 Sandro Sonntag © Adorsys GmbH & Co KG
  • VALIDATION API Validieren einer Bean Set<InvalidConstraint> errors = addressValidator.validate(address); Eines Properties validator.validateProperty(address, "city") Eines Wertes validator.validateValue(Address.class, "city", "Paris")Der Bean Validation Standard JSR 303 18 Sandro Sonntag © Adorsys GmbH & Co KG
  • VALIDATION API• Validierungsergebnis ConstraintViolationImpl{ rootBean=org.adorsys.demo.validation.validategraph.Person@287811, propertyPath=lastname, message=The size of lastname must be between 3 and 30, leafBean=org.adorsys.demo.validation.validategraph.Person@287811, value=Sa} • Fehlgeschlagene Constraints • Ungültiger Wert • Fehlermeldung (i18n) • Bean InstanzDer Bean Validation Standard JSR 303 19 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGES• ConstraintDer Bean Validation Standard JSR 303 20 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGES• Constraint • Definiert eine Default Message public @interface Max { String message() default "{validator.max}"; ...Der Bean Validation Standard JSR 303 20 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGES• Constraint • Definiert eine Default Message public @interface Max { String message() default "{validator.max}"; ... • Kann überschrieben werden @Size(min=3, max=30, message="The size of lastname must be between {min} and {max}") private String lastname;Der Bean Validation Standard JSR 303 20 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGES• Constraint • Definiert eine Default Message public @interface Max { String message() default "{validator.max}"; ... • Kann überschrieben werden @Size(min=3, max=30, message="The size of lastname must be between {min} and {max}") private String lastname; • Kann programmatisch erstellt werden constraintValidatorContext.disableDefaultError(); constraintValidatorContext.addError("A programmatic error");Der Bean Validation Standard JSR 303 20 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGESDer Bean Validation Standard JSR 303 21 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGES• Parameter Ersetzung • Constraint Parameter nutzbar • Value must be between {min} and {max}Der Bean Validation Standard JSR 303 21 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGES• Parameter Ersetzung • Constraint Parameter nutzbar • Value must be between {min} and {max}• Externalizierbar • I18n Resource Bundle • ValidationMessages.propertiesDer Bean Validation Standard JSR 303 21 Sandro Sonntag © Adorsys GmbH & Co KG
  • MESSAGES• Parameter Ersetzung • Constraint Parameter nutzbar • Value must be between {min} and {max}• Externalizierbar • I18n Resource Bundle • ValidationMessages.properties• MessageInterpolator austauschbarDer Bean Validation Standard JSR 303 21 Sandro Sonntag © Adorsys GmbH & Co KG
  • GRUPPIERUNG VON CONSTRAINTS © staumichel / PIXELIODer Bean Validation Standard JSR 303 22 Sandro Sonntag © Adorsys GmbH & Co KG
  • GRUPPIERUNG VON CONSTRAINTS• Validierung eines Subsets von Constraints • Aktivierung von mehreren Gruppen möglich • Portionsweise Validierung in Prozessen/Wizards © staumichel / PIXELIODer Bean Validation Standard JSR 303 22 Sandro Sonntag © Adorsys GmbH & Co KG
  • GRUPPIERUNG VON CONSTRAINTS• Validierung eines Subsets von Constraints • Aktivierung von mehreren Gruppen möglich • Portionsweise Validierung in Prozessen/Wizards• Implementierung • Group = Interface • Vererbung von Gruppen durch „extends“ • Standard Gruppe = Default © staumichel / PIXELIODer Bean Validation Standard JSR 303 22 Sandro Sonntag © Adorsys GmbH & Co KG
  • GRUPPIERUNG VON CONSTRAINTS• Validierung eines Subsets von Constraints • Aktivierung von mehreren Gruppen möglich • Portionsweise Validierung in Prozessen/Wizards• Implementierung • Group = Interface • Vererbung von Gruppen durch „extends“ • Standard Gruppe = Default © staumichel / PIXELIO• GroupSequences zur Priorisierung möglichDer Bean Validation Standard JSR 303 22 Sandro Sonntag © Adorsys GmbH & Co KG
  • @ValidAddress(groups=Address.AddressCheck.class) @GroupSequence({Address.Basic.class, Address.AddressCheck.class}) public class Address { /** * check the Address only if the default group is valid */ public interface AddressCheck {} public interface Basic {} @NotEmpty(groups=Basic.class) @NotNull(groups=Basic.class) private String address; @NotEmpty(groups=Basic.class) @NotNull(groups=Basic.class) private String zip; @NotEmpty(groups=Basic.class) @NotNull(groups=Basic.class) private String city; public String getAddress() { return address; } ... }Der Bean Validation Standard JSR 303 23 Sandro Sonntag © Adorsys GmbH & Co KG
  • CUSTOM CONSTAINTSDer Bean Validation Standard JSR 303 24 Sandro Sonntag © Adorsys GmbH & Co KG
  • CUSTOM CONSTAINTS @Constraint(validatedBy = NumericValidator.class) @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RUNTIME)• Eine Annotation public @interface Numeric { String message() default "not a numeric value"; Class<?>[] groups() default { }; }Der Bean Validation Standard JSR 303 24 Sandro Sonntag © Adorsys GmbH & Co KG
  • CUSTOM CONSTAINTS @Constraint(validatedBy = NumericValidator.class) @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RUNTIME)• Eine Annotation public @interface Numeric { String message() default "not a numeric value"; Class<?>[] groups() default { }; } public class NumericValidator implements ConstraintValidator<Numeric, String>{ public void initialize(Numeric constraintAnnotation) { }• Ein Validator public boolean isValid(String numeric, ConstraintValidatorContext constraintValidatorContext) { try { Long.valueOf(numeric); } catch (NumberFormatException e) { return false; } return true; } }Der Bean Validation Standard JSR 303 24 Sandro Sonntag © Adorsys GmbH & Co KG
  • CUSTOM CONSTAINTS @Numeric(message="A zip has to be numeric.") @Size(min=5, max=5, message="A zip must has a size of 5 digits.") @Constraint(validatedBy={GermanZipcodeValidator.class}) @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RUNTIME) public @interface GermanZip { Class<?>[] groups() default { }; }Der Bean Validation Standard JSR 303 25 Sandro Sonntag © Adorsys GmbH & Co KG
  • COMPOSITE CONSTRAINTS• Baukasten• Codeduplizierung• Wiederverwendung von primitiven Constraints © RainerSturm / PIXELIO• Bessere Toolunterstützung durch Verwendung von Core ConstaintsDer Bean Validation Standard JSR 303 26 Sandro Sonntag © Adorsys GmbH & Co KG
  • WEITERE FEATURESDer Bean Validation Standard JSR 303 27 Sandro Sonntag © Adorsys GmbH & Co KG
  • WEITERE FEATURES• Parameter OverrideDer Bean Validation Standard JSR 303 27 Sandro Sonntag © Adorsys GmbH & Co KG
  • WEITERE FEATURES• Parameter Override @Size @Constraint(validatedBy = FrenchZipcodeValidator.class) public @interface FrenchZipcode { String message() default "Wrong zipcode"; @OverridesParameter(constraint=Size.class, parameter="message") String sizeMessage() default "{beancheck.zipcode.size}"; }Der Bean Validation Standard JSR 303 27 Sandro Sonntag © Adorsys GmbH & Co KG
  • WEITERE FEATURES• Parameter Override @Size @Constraint(validatedBy = FrenchZipcodeValidator.class) public @interface FrenchZipcode { String message() default "Wrong zipcode"; @OverridesParameter(constraint=Size.class, parameter="message") String sizeMessage() default "{beancheck.zipcode.size}"; }• Ein Constraint mehre Validatoren • @Constraint(validatedBy={SizeValidatorForCollection.class})Der Bean Validation Standard JSR 303 27 Sandro Sonntag © Adorsys GmbH & Co KG
  • WEITERE FEATURES• Parameter Override @Size @Constraint(validatedBy = FrenchZipcodeValidator.class) public @interface FrenchZipcode { String message() default "Wrong zipcode"; @OverridesParameter(constraint=Size.class, parameter="message") String sizeMessage() default "{beancheck.zipcode.size}"; }• Ein Constraint mehre Validatoren • @Constraint(validatedBy={SizeValidatorForCollection.class})• Konfigurative Zuordnung • Trennung von Deklaration und ImplementierungDer Bean Validation Standard JSR 303 27 Sandro Sonntag © Adorsys GmbH & Co KG
  • METADATEN API• Zugiff auf das Constraint Repository• Nützlich für Randtechnologien • Javascript • DDL • XSD/WSDL • Spring• Dokumentation• Tooling• DokumentationswerkzeugeDer Bean Validation Standard JSR 303 28 Sandro Sonntag © Adorsys GmbH & Co KG
  • WEITERE INFORMATIONEN• JSR 303 - JCP.org • http://jcp.org/en/jsr/detail?id=303• Agimatec • http://www.agimatec.de/blog/2008/12/bean-validation-jsr-303-13- standard/• From a World of Constraints to Constrain the World • http://www.jboss.org/file-access/default/members/default/freezone/ presentations/JavaOne2008_JSR303BeanValidation.pdfDer Bean Validation Standard JSR 303 29 Sandro Sonntag © Adorsys GmbH & Co KG
  • VIELEN DANK FRAGEN? Sandro Sonntag 30