[corejsf~subversion:173] ...
- From: cayhorstmann@kenai.com
- To: commits@corejsf.kenai.com
- Subject: [corejsf~subversion:173] ...
- Date: Tue, 9 Feb 2010 17:32:30 +0000
Project: corejsf
Repository: subversion
Revision: 173
Author: cayhorstmann
Date: 2010-02-09 17:32:27 UTC
Link:
Log Message:
------------
...
Revisions:
----------
173
Modified Paths:
---------------
ch08/valuechange/web/index.xhtml
ch07/validator2/src/java/com/corejsf/CreditCardValidator.java
build.xml
build.properties.glassfish
ch04/select/web/index.xhtml
ch07/bean-validator/src/java/com/corejsf/LuhnCheckValidator.java
ch07/bean-validator/src/java/com/corejsf/PaymentBean.java
ch04/select/src/java/com/corejsf/RegisterForm.java
ch07/bean-validator/src/java/ValidationMessages.properties
ch08/valuechange/src/java/com/corejsf/RegisterForm.java
ch05/planets/web/saturn.xhtml
ch07/bean-validator/src/java/com/corejsf/LuhnCheck.java
Added Paths:
------------
ch08/rushmore/web/resources/images/lincoln.jpg
ch08/rushmore/web/resources/images/roosevelt.jpg
ch08/rushmore/web/resources/images/washington.jpg
ch08/rushmore/web/resources/images/jefferson.jpg
Diffs:
------
Index: build.xml
===================================================================
--- build.xml (revision 172)
+++ build.xml (revision 173)
@@ -2,6 +2,7 @@
<property environment="env"/>
<property file="build.properties"/>
+ <property file="${app}/tomcat.properties"/>
<property name="appdir" value="${basedir}/${app}"/>
<basename property="appname" file="${appdir}"/>
<property name="builddir" value="${appdir}/build"/>
@@ -66,7 +67,6 @@
</target>
<target name="jsf-libs" if="use-jsf-libs">
- <property file="${app}/tomcat.properties"/>
<mkdir dir="${builddir}/WEB-INF/lib"/>
<copy file="${jsf.api.jar}" todir="${builddir}/WEB-INF/lib"
verbose="true"/>
<copy file="${jsf.impl.jar}" todir="${builddir}/WEB-INF/lib"
verbose="true"/>
Index: ch04/select/src/java/com/corejsf/RegisterForm.java
===================================================================
--- ch04/select/src/java/com/corejsf/RegisterForm.java (revision 172)
+++ ch04/select/src/java/com/corejsf/RegisterForm.java (revision 173)
@@ -1,5 +1,6 @@
package com.corejsf;
+import java.awt.Color;
import java.io.Serializable;
import java.text.DateFormatSymbols;
import java.util.ArrayList;
@@ -20,7 +21,7 @@
@Named("form") // or @ManagedBean(name="form")
@SessionScoped
public class RegisterForm implements Serializable {
- enum Education { HIGH_SCHOOL, BACHELOR, MASTER, DOCTOR, NONE };
+ public enum Education { HIGH_SCHOOL, BACHELOR, MASTER, DOCTOR };
public static class Weekday {
private int dayOfWeek;
@@ -43,7 +44,7 @@
private boolean contactMe;
private int[] bestDaysToContact;
private Integer yearOfBirth;
- private String[] colors;
+ private int[] colors;
private Set<String> languages = new TreeSet<String>();
private Education education = Education.BACHELOR;
@@ -59,8 +60,8 @@
public Integer getYearOfBirth() { return yearOfBirth; }
public void setYearOfBirth(Integer newValue) { yearOfBirth = newValue; }
- public String[] getColors() { return colors; }
- public void setColors(String[] newValue) { colors = newValue; }
+ public int[] getColors() { return colors; }
+ public void setColors(int[] newValue) { colors = newValue; }
public Set<String> getLanguages() { return languages; }
public void setLanguages(Set<String> newValue) { languages = newValue; }
@@ -72,50 +73,53 @@
public Weekday[] getDaysOfTheWeek() { return daysOfTheWeek; }
- public Map<String, Object> getLanguageItems() { return languageItems; }
+ public SelectItem[] getLanguageItems() { return languageItems; }
public SelectItem[] getColorItems() { return colorItems; }
- public SelectItem[] getEducationItems() { return educationItems; }
+ public Map<String, Education> getEducationItems() { return
educationItems; }
public String getBestDaysConcatenated() {
return Arrays.toString(bestDaysToContact);
}
- public String getColorsConcatenated() { return Arrays.toString(colors); }
+ public String getColorsConcatenated() {
+ StringBuilder result = new StringBuilder();
+ for (int color : colors) result.append(String.format("%06x ", color));
+ return result.toString();
+ }
- private static SelectItem[] colorItems = {
- new SelectItem("Red"),
- new SelectItem("Blue"),
- new SelectItem("Yellow"),
- new SelectItem("Green"),
- new SelectItem("Orange", "Orange", "", true)
+ private SelectItem[] colorItems = {
+ new SelectItem(Color.RED.getRGB(), "Red"), // value, label
+ new SelectItem(Color.GREEN.getRGB(), "Green"),
+ new SelectItem(Color.BLUE.getRGB(), "Blue"),
+ new SelectItem(Color.YELLOW.getRGB(), "Yellow"),
+ new SelectItem(Color.ORANGE.getRGB(), "Orange", "", true) // disabled
};
- private static SelectItem[] educationItems = {
- new SelectItem(Education.HIGH_SCHOOL, "High School"),
- new SelectItem(Education.BACHELOR, "Bachelor's"),
- new SelectItem(Education.MASTER, "Master's"),
- new SelectItem(Education.DOCTOR, "Doctorate"),
- new SelectItem(Education.NONE, "None of the above", "", false, false,
true)
+ private static Map<String, Education> educationItems;
+ static {
+ educationItems = new LinkedHashMap<String, Education>();
+ educationItems.put("High School", Education.HIGH_SCHOOL); // label,
value
+ educationItems.put("Bachelor's", Education.BACHELOR);
+ educationItems.put("Master's", Education.MASTER);
+ educationItems.put("Doctorate", Education.DOCTOR);
};
- private static Map<String, Object> languageItems;
- static {
- languageItems = new LinkedHashMap<String, Object>();
- languageItems.put("English", "en"); // item, value
- languageItems.put("French", "fr");
- languageItems.put("Russian", "ru");
- languageItems.put("Italian", "it");
- languageItems.put("Spanish", "es");
- }
+ private static SelectItem[] languageItems = {
+ new SelectItem("English"),
+ new SelectItem("French"),
+ new SelectItem("Russian"),
+ new SelectItem("Italian"),
+ new SelectItem("Esperanto", "Esperanto", "", true) // disabled
+ };
private static Collection<SelectItem> birthYears;
static {
birthYears = new ArrayList<SelectItem>();
- for (int i = 1900; i < 2020; ++i) {
- birthYears.add(new SelectItem(i));
- }
+ // The first item is a "no selection" item
+ birthYears.add(new SelectItem(null, "Pick a year:", "", false, false,
true));
+ for (int i = 1900; i < 2020; ++i) birthYears.add(new SelectItem(i));
}
private static Weekday[] daysOfTheWeek;
Index: ch04/select/web/index.xhtml
===================================================================
--- ch04/select/web/index.xhtml (revision 172)
+++ ch04/select/web/index.xhtml (revision 173)
@@ -22,9 +22,9 @@
itemLabel="#{w.dayName}"
itemValue="#{w.dayNumber}"/>
</h:selectManyMenu>
#{msgs.yearOfBirthPrompt}
- <h:selectOneListbox size="5" value="#{form.yearOfBirth}">
+ <h:selectOneMenu value="#{form.yearOfBirth}" required="true">
<f:selectItems value="#{form.yearItems}"/>
- </h:selectOneListbox>
+ </h:selectOneMenu>
#{msgs.colorPrompt}
<h:selectManyCheckbox value="#{form.colors}"
selectedClass="selected"
disabledClass="disabled"
@@ -32,11 +32,11 @@
<f:selectItems value="#{form.colorItems}"/>
</h:selectManyCheckbox>
#{msgs.languagePrompt}
- <h:selectManyListbox value="#{form.languages}">
+ <h:selectManyListbox size="5" value="#{form.languages}">
<f:selectItems value="#{form.languageItems}"/>
</h:selectManyListbox>
#{msgs.educationPrompt}
- <h:selectOneRadio value="#{form.education}" required="true"
+ <h:selectOneRadio value="#{form.education}"
selectedClass="selected"
layout="pageDirection">
<f:selectItems value="#{form.educationItems}"/>
</h:selectOneRadio>
Index: ch05/planets/web/saturn.xhtml
===================================================================
--- ch05/planets/web/saturn.xhtml (revision 172)
+++ ch05/planets/web/saturn.xhtml (revision 173)
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:ui="http://java.sun.com/jsf/facelets">
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets">
<head><title>IGNORED</title></head>
<body>
<ui:composition template="/templates/masterLayout.xhtml">
Index: ch07/validator2/src/java/com/corejsf/CreditCardValidator.java
===================================================================
--- ch07/validator2/src/java/com/corejsf/CreditCardValidator.java
(revision 172)
+++ ch07/validator2/src/java/com/corejsf/CreditCardValidator.java
(revision 173)
@@ -16,7 +16,7 @@
if (value instanceof CreditCard)
cardNumber = value.toString();
else
- cardNumber = getDigitsOnly(value.toString());
+ cardNumber = value.toString().replaceAll("\\D", ""); // remove
non-digits
if(!luhnCheck(cardNumber)) {
FacesMessage message
= com.corejsf.util.Messages.getMessage(
@@ -40,16 +40,4 @@
return sum % 10 == 0;
}
-
- private static String getDigitsOnly(String s) {
- StringBuilder digitsOnly = new StringBuilder ();
- char c;
- for(int i = 0; i < s.length (); i++) {
- c = s.charAt (i);
- if (Character.isDigit(c)) {
- digitsOnly.append(c);
- }
- }
- return digitsOnly.toString ();
- }
}
\ No newline at end of file
Index: ch07/bean-validator/src/java/ValidationMessages.properties
===================================================================
--- ch07/bean-validator/src/java/ValidationMessages.properties (revision 172)
+++ ch07/bean-validator/src/java/ValidationMessages.properties (revision 173)
@@ -1,3 +1,3 @@
javax.validation.constraints.Min.message=Must be at least {value}
-com.corejsf.PaymentBean.creditCardLength=The credit card number must have at
least 13 digits
+com.corejsf.creditCardLength=The credit card number must have at least 13
digits
com.corejsf.LuhnCheck.message=Not a valid credit card number
\ No newline at end of file
Index: ch07/bean-validator/src/java/com/corejsf/PaymentBean.java
===================================================================
--- ch07/bean-validator/src/java/com/corejsf/PaymentBean.java (revision 172)
+++ ch07/bean-validator/src/java/com/corejsf/PaymentBean.java (revision 173)
@@ -17,7 +17,7 @@
public class PaymentBean implements Serializable {
@Min(10) @Max(10000)
private double amount;
- @Size(min=13,message="{com.corejsf.PaymentBean.creditCardLength}")
@LuhnCheck
+ @Size(min=13,message="{com.corejsf.creditCardLength}") @LuhnCheck
private String card = "";
@Future
private Date date = new Date();
Index: ch07/bean-validator/src/java/com/corejsf/LuhnCheck.java
===================================================================
--- ch07/bean-validator/src/java/com/corejsf/LuhnCheck.java (revision 172)
+++ ch07/bean-validator/src/java/com/corejsf/LuhnCheck.java (revision 173)
@@ -13,7 +13,7 @@
@Documented
@Constraint(validatedBy=LuhnCheckValidator.class)
public @interface LuhnCheck {
- String message() default "{com.corejsf.LuhnCheck.message}";
- Class[] groups() default {};
- Class<? extends Payload>[] payload() default {};
+ String message() default "{com.corejsf.LuhnCheck.message}";
+ Class[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
}
Index: ch07/bean-validator/src/java/com/corejsf/LuhnCheckValidator.java
===================================================================
--- ch07/bean-validator/src/java/com/corejsf/LuhnCheckValidator.java
(revision 172)
+++ ch07/bean-validator/src/java/com/corejsf/LuhnCheckValidator.java
(revision 173)
@@ -2,18 +2,17 @@
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
-public class LuhnCheckValidator implements ConstraintValidator<LuhnCheck,
String>{
-
- public void initialize(LuhnCheck constraintAnnotation) {
- }
-
- public boolean isValid(String value, ConstraintValidatorContext context)
{
- return luhnCheck(getDigitsOnly(value));
- }
-
+public class LuhnCheckValidator implements ConstraintValidator<LuhnCheck,
String> {
+ public void initialize(LuhnCheck constraintAnnotation) {
+ }
+
+ public boolean isValid(String value, ConstraintValidatorContext context) {
+ return luhnCheck(value.replaceAll("\\D", "")); // remove non-digits
+ }
+
private static boolean luhnCheck(String cardNumber) {
int sum = 0;
-
+
for(int i = cardNumber.length() - 1; i >= 0; i -= 2) {
sum += Integer.parseInt(cardNumber.substring(i, i + 1));
if(i > 0) {
@@ -22,20 +21,7 @@
sum += d;
}
}
-
+
return sum % 10 == 0;
}
-
- private static String getDigitsOnly(String s) {
- StringBuilder digitsOnly = new StringBuilder ();
- char c;
- for(int i = 0; i < s.length (); i++) {
- c = s.charAt (i);
- if (Character.isDigit(c)) {
- digitsOnly.append(c);
- }
- }
- return digitsOnly.toString ();
- }
-
}
Index: ch08/valuechange/src/java/com/corejsf/RegisterForm.java
===================================================================
--- ch08/valuechange/src/java/com/corejsf/RegisterForm.java (revision 172)
+++ ch08/valuechange/src/java/com/corejsf/RegisterForm.java (revision 173)
@@ -1,9 +1,7 @@
package com.corejsf;
import java.io.Serializable;
-import java.util.LinkedHashMap;
import java.util.Locale;
-import java.util.Map;
import javax.inject.Named;
// or import javax.faces.bean.ManagedBean;
@@ -20,16 +18,8 @@
private String state;
private String country;
- private static Map<String, String> countryNames
- = new LinkedHashMap<String, String>();
- static {
- countryNames.put("United States", "US");
- countryNames.put("Canada", "CA");
- }
-
- public Map<String, String> getCountryNames() {
- return countryNames;
- }
+ private static final Locale[] countries = { Locale.US, Locale.CANADA };
+ public Locale[] getCountries() { return countries; }
public void setStreetAddress(String newValue) { streetAddress = newValue;
}
public String getStreetAddress() { return streetAddress; }
@@ -44,11 +34,8 @@
public String getCountry() { return country; }
public void countryChanged(ValueChangeEvent event) {
- FacesContext context = FacesContext.getCurrentInstance();
-
- if ("US".equals(event.getNewValue()))
- context.getViewRoot().setLocale(Locale.US);
- else
- context.getViewRoot().setLocale(Locale.CANADA);
+ for (Locale loc : countries)
+ if (loc.getCountry().equals(event.getNewValue()))
+ FacesContext.getCurrentInstance().getViewRoot().setLocale(loc);
}
}
Index: ch08/valuechange/web/index.xhtml
===================================================================
--- ch08/valuechange/web/index.xhtml (revision 172)
+++ ch08/valuechange/web/index.xhtml (revision 173)
@@ -24,8 +24,9 @@
#{msgs.countryPrompt}
<h:selectOneMenu value="#{form.country}" onchange="submit()"
- valueChangeListener="#{form.countryChanged}">
- <f:selectItems value="#{form.countryNames}"/>
+ valueChangeListener="#{form.countryChanged}">
+ <f:selectItems value="#{form.countries}" var="loc"
+ itemLabel="#{loc.displayCountry}"
itemValue="#{loc.country}"/>
</h:selectOneMenu>
</h:panelGrid>
<h:commandButton value="#{msgs.submit}"/>
Index: ch08/rushmore/web/resources/images/jefferson.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: ch08/rushmore/web/resources/images/jefferson.jpg
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Index: ch08/rushmore/web/resources/images/washington.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: ch08/rushmore/web/resources/images/washington.jpg
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Index: ch08/rushmore/web/resources/images/roosevelt.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: ch08/rushmore/web/resources/images/roosevelt.jpg
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Index: ch08/rushmore/web/resources/images/lincoln.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: ch08/rushmore/web/resources/images/lincoln.jpg
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Index: build.properties.glassfish
===================================================================
--- build.properties.glassfish (revision 172)
+++ build.properties.glassfish (revision 173)
@@ -2,10 +2,11 @@
jsf.api.jar=${appserver.dir}/modules/jsf-api.jar
servlet.api.jar=${appserver.dir}/modules/javax.servlet.jar
el.api.jar=${appserver.dir}/modules/javax.servlet.jsp.jar
-bean-validation.api.jar=${appserver.dir}/modules/bean-validator.jar
-cdi.api.jar=${appserver.dir}/modules/weld-osgi-bundle.jar
jpa.api.jar=${appserver.dir}/modules/javax.persistence.jar
jta.api.jar=${appserver.dir}/modules/javax.transaction.jar
ejb.api.jar=${appserver.dir}/modules/javax.ejb.jar
+bean-validation.api.jar=${appserver.dir}/modules/bean-validator.jar
+cdi.api.jar=${appserver.dir}/modules/weld-osgi-bundle.jar
mail.api.jar=${appserver.dir}/modules/mail.jar
deploy.dir=/home/domains/domain1/autodeploy
+
|
[corejsf~subversion:173] ... |
cayhorstmann | 02/09/2010 |





