[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
  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2010, Oracle Corporation and/or its affiliates
(revision 20120127.ac94057)
 
 
Close
loading
Please Confirm
Close