[jboss-cvs] jboss-seam/examples/spring/src/org/jboss/seam/example/spring ...
Norman Richards
norman.richards at jboss.com
Mon Feb 19 16:53:50 EST 2007
User: nrichards
Date: 07/02/19 16:53:50
Modified: examples/spring/src/org/jboss/seam/example/spring
Booking.java Hotel.java HotelBookingAction.java
HotelSearchingAction.java User.java
Added: examples/spring/src/org/jboss/seam/example/spring
BookingListAction.java BookingService.java
ChangePasswordAction.java LoginAction.java
RegisterAction.java UserService.java
ValidationException.java
Removed: examples/spring/src/org/jboss/seam/example/spring
MyApp.java SeamBookingDao.java
SpringBookingDao.java
Log:
booking
Revision Changes Path
1.2 +190 -173 jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Booking.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Booking.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Booking.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- Booking.java 18 Feb 2007 19:57:59 -0000 1.1
+++ Booking.java 19 Feb 2007 21:53:50 -0000 1.2
@@ -1,6 +1,8 @@
+//$Id: Booking.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
import java.io.Serializable;
+import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.Date;
@@ -16,10 +18,11 @@
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.hibernate.validator.Pattern;
+import org.jboss.seam.annotations.Name;
@Entity
-public class Booking
- implements Serializable
+ at Name("booking")
+public class Booking implements Serializable
{
private Long id;
private User user;
@@ -41,6 +44,18 @@
this.user = user;
}
+ @Transient
+ public BigDecimal getTotal()
+ {
+ return hotel.getPrice().multiply( new BigDecimal( getNights() ) );
+ }
+
+ @Transient
+ public int getNights()
+ {
+ return (int) ( checkoutDate.getTime() - checkinDate.getTime() ) / 1000 / 60 / 60 / 24;
+ }
+
@Id @GeneratedValue
public Long getId()
{
@@ -50,6 +65,7 @@
{
this.id = id;
}
+
@NotNull
@Basic @Temporal(TemporalType.DATE)
public Date getCheckinDate()
@@ -94,7 +110,7 @@
@NotNull(message="Credit card number is required")
@Length(min=16, max=16, message="Credit card number must 16 digits long")
- @Pattern(regex="\\d*", message="Credit card number must be numeric")
+ @Pattern(regex="^\\d*$", message="Credit card number must be numeric")
public String getCreditCard()
{
return creditCard;
@@ -109,7 +125,7 @@
public String getDescription()
{
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
- return hotel.getName() +
+ return hotel==null ? null : hotel.getName() +
", " + df.format( getCheckinDate() ) +
" to " + df.format( getCheckoutDate() );
}
@@ -170,4 +186,5 @@
{
return "Booking(" + user + ","+ hotel + ")";
}
+
}
1.2 +114 -112 jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Hotel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Hotel.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/Hotel.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- Hotel.java 18 Feb 2007 19:57:59 -0000 1.1
+++ Hotel.java 19 Feb 2007 21:53:50 -0000 1.2
@@ -1,3 +1,4 @@
+//$Id: Hotel.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
import java.io.Serializable;
@@ -10,10 +11,11 @@
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
+import org.jboss.seam.annotations.Name;
@Entity
-public class Hotel
- implements Serializable
+ at Name("hotel")
+public class Hotel implements Serializable
{
private Long id;
private String name;
1.2 +104 -92 jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelBookingAction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: HotelBookingAction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelBookingAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- HotelBookingAction.java 19 Feb 2007 19:30:26 -0000 1.1
+++ HotelBookingAction.java 19 Feb 2007 21:53:50 -0000 1.2
@@ -1,44 +1,62 @@
+//$Id: HotelBookingAction.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
+import static org.jboss.seam.ScopeType.SESSION;
+import static javax.persistence.PersistenceContextType.EXTENDED;
+
import java.util.Calendar;
+import java.util.List;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceException;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
-//import org.jboss.seam.core.Events;
+import org.jboss.seam.annotations.Begin;
+import org.jboss.seam.annotations.Destroy;
+import org.jboss.seam.annotations.End;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Out;
+import org.jboss.seam.core.Events;
import org.jboss.seam.core.FacesMessages;
-//import org.jboss.seam.log.Log;
-import org.springframework.orm.jpa.JpaCallback;
-import org.springframework.orm.jpa.JpaTemplate;
-
-public class HotelBookingAction
-{
- private JpaTemplate jpaTemplate;
+import org.jboss.seam.log.Log;
+
+import org.hibernate.Session;
+
+ at Name("hotelBooking")
+public class HotelBookingAction {
+
+ @In("#{bookingService}")
+ private BookingService bookingService;
+ @In
private User user;
+
+ @In(required = false)
+ @Out
private Hotel hotel;
+
+ @In(required = false)
+ @Out(required = false)
private Booking booking;
+
+ @In
private FacesMessages facesMessages;
-// private Events events;
-// private Log log;
+
+ @In
+ private Events events;
+
+ @Logger
+ private Log log;
private boolean bookingValid;
- //@Begin
- public void selectHotel(final Hotel selectedHotel)
- {
- hotel = (Hotel) jpaTemplate.execute(new JpaCallback() {
- public Object doInJpa(EntityManager em)
- throws PersistenceException
- {
- return em.merge(selectedHotel);
- }
- });
+ @Begin
+ public void selectHotel(Hotel selectedHotel) {
+ hotel = bookingService.findHotelById(selectedHotel.getId());
}
- public void bookHotel()
- {
+ public void bookHotel() {
booking = new Booking(hotel, user);
Calendar calendar = Calendar.getInstance();
booking.setCheckinDate(calendar.getTime());
@@ -46,47 +64,41 @@
booking.setCheckoutDate(calendar.getTime());
}
- public void setBookingDetails()
- {
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.DAY_OF_MONTH, -1);
- if (booking.getCheckinDate().before(calendar.getTime())) {
- facesMessages.add("Check in date must be a future date");
- bookingValid=false;
- } else if (!booking.getCheckinDate().before(booking.getCheckoutDate())) {
- facesMessages.add("Check out date must be later than check in date");
- bookingValid=false;
- } else {
- bookingValid=true;
+ public void setBookingDetails() {
+ bookingValid = true;
+ try {
+ bookingService.validateBooking(booking);
+ } catch (ValidationException e) {
+ facesMessages.add(FacesMessage.SEVERITY_ERROR, e.getMessage());
+ bookingValid = false;
}
}
- public boolean isBookingValid()
- {
+
+ public boolean isBookingValid() {
return bookingValid;
}
- //@End
- public void confirm()
- {
- jpaTemplate.execute(new JpaCallback() {
- public Object doInJpa(EntityManager em)
- throws PersistenceException
- {
- System.out.println("PERSIST: " + booking);
- em.persist(booking);
+ @Out(required = false, scope = SESSION)
+ List<Booking> bookings;
+
+ @End
+ public String confirm() {
+ try {
+ bookingService.bookHotel(booking);
+ } catch (ValidationException e) {
+ facesMessages.add(FacesMessage.SEVERITY_ERROR, e.getMessage());
return null;
}
- });
+ facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+ log.info("New booking: #{booking.id} for #{user.username}");
- //facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
- //log.info("New booking: #{booking.id} for #{user.username}");
- //events.raiseTransactionSuccessEvent("bookingConfirmed");
+ // force refresh in main.xhtml
+ bookings = null;
+ return "main";
}
- //@End
- public void cancel() {}
-
- public void setEntityManagerFactory(EntityManagerFactory emf) {
- jpaTemplate = new JpaTemplate(emf);
+ @End
+ public void cancel() {
}
+
}
\ No newline at end of file
1.2 +68 -91 jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelSearchingAction.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: HotelSearchingAction.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/HotelSearchingAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- HotelSearchingAction.java 19 Feb 2007 19:30:26 -0000 1.1
+++ HotelSearchingAction.java 19 Feb 2007 21:53:50 -0000 1.2
@@ -1,72 +1,45 @@
+//$Id: HotelSearchingAction.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
-import java.util.ArrayList;
import java.util.List;
-import javax.faces.model.DataModel;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceException;
-
-import org.jboss.seam.jsf.ListDataModel;
-import org.springframework.orm.jpa.JpaCallback;
-import org.springframework.orm.jpa.JpaTemplate;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.datamodel.DataModel;
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
public class HotelSearchingAction
{
- private JpaTemplate jpaTemplate;
+
+ @In("#{bookingService}")
+ private BookingService bookingService;
private String searchString;
private int pageSize = 10;
private int page;
+ @DataModel
private List<Hotel> hotels;
- public void setEntityManagerFactory(EntityManagerFactory emf) {
- jpaTemplate = new JpaTemplate(emf);
- }
-
- public List<Hotel> getHotels() {
- return hotels;
- }
-
- public DataModel getHotelsModel() {
- List data = getHotels();
-
- if (data == null) {
- data = new ArrayList(0);
- }
-
- return new ListDataModel(data);
- }
-
public void find()
{
page = 0;
queryHotels();
}
+
public void nextPage()
{
page++;
queryHotels();
}
- @SuppressWarnings("unchecked")
private void queryHotels()
{
- hotels = (List<Hotel>) jpaTemplate.execute(new JpaCallback() {
- public Object doInJpa(EntityManager em)
- throws PersistenceException
- {
String searchPattern = searchString==null ? "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
- return em.createQuery("select h from Hotel h where lower(h.name) like :search or lower(h.city) like :search or lower(h.zip) like :search or lower(h.address) like :search")
- .setParameter("search", searchPattern)
- .setMaxResults(pageSize)
- .setFirstResult( page * pageSize )
- .getResultList();
- }
- });
- System.out.println("HOTELS:" + hotels);
+ hotels = bookingService.findHotels(searchPattern, pageSize, page * pageSize);
}
public boolean isNextPageAvailable()
@@ -77,15 +50,19 @@
public int getPageSize() {
return pageSize;
}
+
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
+
public String getSearchString()
{
return searchString;
}
+
public void setSearchString(String searchString)
{
this.searchString = searchString;
}
+
}
\ No newline at end of file
1.2 +11 -2 jboss-seam/examples/spring/src/org/jboss/seam/example/spring/User.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: User.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/spring/src/org/jboss/seam/example/spring/User.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- User.java 18 Feb 2007 19:57:59 -0000 1.1
+++ User.java 19 Feb 2007 21:53:50 -0000 1.2
@@ -1,3 +1,4 @@
+//$Id: User.java,v 1.2 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
import static org.jboss.seam.ScopeType.SESSION;
@@ -6,12 +7,19 @@
import javax.persistence.Entity;
import javax.persistence.Id;
+import javax.persistence.Table;
+
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
+import org.hibernate.validator.Pattern;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
@Entity
-public class User
- implements Serializable
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="Customer")
+public class User implements Serializable
{
private String username;
private String password;
@@ -50,6 +58,7 @@
@Id
@Length(min=5, max=15)
+ @Pattern(regex="^\\w*$", message="not a valid username")
public String getUsername()
{
return username;
1.1 date: 2007/02/19 21:53:50; author: nrichards; state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/BookingListAction.java
Index: BookingListAction.java
===================================================================
//$Id: BookingListAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
// import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
import static org.jboss.seam.ScopeType.SESSION;
import java.io.Serializable;
import java.util.List;
// import javax.ejb.TransactionAttribute;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;
import org.jboss.seam.core.FacesMessages;
import org.jboss.seam.log.Log;
import org.hibernate.Session;
@Scope(SESSION)
@Name("bookingList")
// @TransactionAttribute(REQUIRES_NEW)
public class BookingListAction implements Serializable
{
@In("#{bookingService}")
private BookingService bookingService;
@In
private User user;
@DataModel
private List<Booking> bookings;
@DataModelSelection
private Booking booking;
@Logger
private Log log;
@Factory(value="")
// @Observer("bookingConfirmed")
public void getBookings()
{
bookings = bookingService.findBookingsByUsername(user.getUsername());
}
public void cancel()
{
log.info("Cancel booking: #{bookingList.booking.id} for #{user.username}");
bookingService.cancelBooking(booking.getId());
getBookings();
FacesMessages.instance().add("Booking cancelled for confirmation number #{bookingList.booking.id}");
}
public Booking getBooking()
{
return booking;
}
}
1.1 date: 2007/02/19 21:53:50; author: nrichards; state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/BookingService.java
Index: BookingService.java
===================================================================
/**
*
*/
package org.jboss.seam.example.spring;
import java.util.Calendar;
import java.util.List;
import org.hibernate.Session;
/**
* @author youngm
*
*/
public class BookingService {
private Session session;
public List<Hotel> findHotels(String searchPattern, int firstResult, int maxResults) {
return session.createQuery("select h from Hotel h where lower(h.name) like :search or lower(h.city) like :search or lower(h.zip) like :search or lower(h.address) like :search")
.setParameter("search", searchPattern)
.setMaxResults(maxResults)
.setFirstResult( firstResult )
.list();
}
public List findBookingsByUsername(String username) {
return session.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate")
.setParameter("username", username).list();
}
public void cancelBooking(Long bookingId) {
if (bookingId == null) {
throw new IllegalArgumentException("BookingId cannot be null");
}
Booking cancelled = (Booking) session.get(Booking.class, bookingId);
if (cancelled != null) {
session.delete(cancelled);
}
}
public void validateBooking(Booking booking) throws ValidationException {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -1);
if (booking.getCheckinDate().before(calendar.getTime())) {
throw new ValidationException("Check in date must be a future date");
} else if (!booking.getCheckinDate().before(booking.getCheckoutDate())) {
throw new ValidationException("Check out date must be later than check in date");
}
}
public void bookHotel(Booking booking) throws ValidationException {
validateBooking(booking);
session.persist(booking);
}
public Hotel findHotelById(Long hotelId) {
if (hotelId == null) {
throw new IllegalArgumentException("hotelId cannot be null");
}
return (Hotel) session.get(Hotel.class, hotelId);
}
/**
* @param session the session to set
*/
public void setSession(Session session) {
this.session = session;
}
}
1.1 date: 2007/02/19 21:53:50; author: nrichards; state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/ChangePasswordAction.java
Index: ChangePasswordAction.java
===================================================================
//$Id: ChangePasswordAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
import static org.jboss.seam.ScopeType.EVENT;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.core.FacesMessages;
import org.hibernate.Session;
@Scope(EVENT)
@Name("changePassword")
public class ChangePasswordAction
{
@In @Out
private User user;
@In("#{userService}")
private UserService userService;
private String verify;
private boolean changed;
public void changePassword()
{
if(userService.changePassword(user.getUsername(), verify, user.getPassword())) {
FacesMessages.instance().add("Password updated");
changed = true;
} else {
FacesMessages.instance().add("verify", "Re-enter new password");
verify=null;
}
user = userService.findUser(user.getUsername());
}
public boolean isChanged()
{
return changed;
}
public String getVerify()
{
return verify;
}
public void setVerify(String verify)
{
this.verify = verify;
}
}
1.1 date: 2007/02/19 21:53:50; author: nrichards; state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/LoginAction.java
Index: LoginAction.java
===================================================================
//$Id: LoginAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
import org.jboss.seam.ScopeType;
import org.jboss.seam.Seam;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Synchronized;
import org.jboss.seam.core.FacesMessages;
@Scope(ScopeType.SESSION)
@Synchronized
@Name("login")
public class LoginAction {
@In(required = false)
@Out(required = false)
private User user;
@In("#{userService}")
private UserService userService;
@In
private FacesMessages facesMessages;
private boolean loggedIn;
public void login() {
User candidateUser = userService.findUser(user.getUsername(), user.getPassword());
if (candidateUser == null) {
facesMessages.add("Invalid login");
} else {
user = candidateUser;
loggedIn = true;
facesMessages.add("Welcome, #{user.name}");
}
}
public void logout() {
loggedIn = false;
Seam.invalidateSession();
}
public void validateLogin() {
if (!loggedIn) {
facesMessages.add("Please log in first");
}
}
public boolean isLoggedIn() {
return loggedIn;
}
}
1.1 date: 2007/02/19 21:53:50; author: nrichards; state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/RegisterAction.java
Index: RegisterAction.java
===================================================================
//$Id: RegisterAction.java,v 1.1 2007/02/19 21:53:50 nrichards Exp $
package org.jboss.seam.example.spring;
import static org.jboss.seam.ScopeType.EVENT;
import java.util.List;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.core.FacesMessages;
import org.hibernate.Session;
@Scope(EVENT)
@Name("register")
public class RegisterAction
{
@In
private User user;
@In("#{userService}")
private UserService userService;
@In
private FacesMessages facesMessages;
private String verify;
private boolean registered;
public void register()
{
if ( user.getPassword().equals(verify) )
{
try {
userService.createUser(user);
registered = true;
} catch(ValidationException e) {
facesMessages.add(e.getMessage());
}
}
else
{
facesMessages.add("verify", "Re-enter your password");
verify=null;
}
}
public void invalid()
{
facesMessages.add("Please try again");
}
public boolean isRegistered()
{
return registered;
}
public String getVerify()
{
return verify;
}
public void setVerify(String verify)
{
this.verify = verify;
}
}
1.1 date: 2007/02/19 21:53:50; author: nrichards; state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/UserService.java
Index: UserService.java
===================================================================
/**
*
*/
package org.jboss.seam.example.spring;
import java.util.List;
import org.hibernate.Session;
import org.jboss.seam.core.FacesMessages;
/**
* @author youngm
*
*/
public class UserService {
private Session session;
public boolean changePassword(String username, String oldPassword, String newPassword) {
if (newPassword == null || "".equals(newPassword)) {
throw new IllegalArgumentException("newPassword cannot be null.");
}
User user = findUser(username);
if (user.getPassword().equals(oldPassword)) {
user.setPassword(newPassword);
return true;
} else {
return false;
}
}
public User findUser(String username) {
if (username == null || "".equals(username)) {
throw new IllegalArgumentException("Username cannot be null");
}
return (User) session.get(User.class, username);
}
public User findUser(String username, String password) {
List<User> results = session.createQuery(
"select u from User u where u.username=:username and u.password=:password").setParameter("username",
username).setParameter("password", password).list();
if (results.size() == 0) {
return null;
} else {
return results.get(0);
}
}
public void createUser(User user) throws ValidationException {
if(user == null) {
throw new IllegalArgumentException("User cannot be null");
}
User existingUser = findUser(user.getUsername());
if(existingUser != null) {
throw new ValidationException("Username "+user.getUsername()+" already exists");
}
session.persist(user);
}
/**
* @param session the session to set
*/
public void setSession(Session session) {
this.session = session;
}
}
1.1 date: 2007/02/19 21:53:50; author: nrichards; state: Exp;jboss-seam/examples/spring/src/org/jboss/seam/example/spring/ValidationException.java
Index: ValidationException.java
===================================================================
package org.jboss.seam.example.spring;
/**
* @author youngm
*
*/
public class ValidationException extends Exception {
public ValidationException(String message) {
super(message);
}
}
More information about the jboss-cvs-commits
mailing list