Hello experts, could you please take a look at my code. I am really not sure if my exception handling is correct or maybe completely wrong. As you can see I catch every exception log what happened and throw a new RuntimeException! Could you give me a hand how I should implement exception handling in my DAO beans?
@Stateless | public class CustomerServiceBean implements CustomerService, CustomerServiceRemote | { | private @PersistenceContext(unitName = "order") EntityManager em; | private static Logger logger = Logger.getLogger(Customer.class); | | /** | * Persist customer object | * @param customer the customer to persist | * @return the persisted customer object | * @throws GenericServiceException | */ | @PermitAll | public Customer persistCustomer(Customer customer) throws GenericServiceException | { | if(customer == null) | { | String errorMessage = "Can not persist empty object!"; | logger.warn(errorMessage); | throw new GenericServiceException(errorMessage); | } | | try | { | if(logger.isDebugEnabled()) | logger.debug("Persist customer " + customer.toString() + "."); | | em.persist(customer); | | if(logger.isDebugEnabled()) | logger.debug("Customer " + customer.toString() + " with id " + customer.getId() + " persisted!"); | | return customer; | } | catch(Throwable e) | { | logger.error("Could not persist customer " + customer.toString(),e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Merge customer object | * @param customer the customer to persist | * @return the merged customer object | * @throws GenericServiceException | */ | @PermitAll | public Customer mergeCustomer(Customer customer) throws GenericServiceException | { | if(customer == null) | { | String errorMessage = "Can not merge empty object!"; | logger.warn(errorMessage); | throw new GenericServiceException(errorMessage); | } | | try | { | if(logger.isDebugEnabled()) | logger.debug("Merge customer " + customer.toString() + "."); | | return em.merge(customer); | | } | catch(Throwable e) | { | logger.error("Could not merge customer " + customer.toString(),e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Find customer | * @param id | * @return the customer object | * @throws GenericServiceException | */ | @PermitAll | public Customer findCustomerById(int id) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Find customer " + id); | | return em.find(Customer.class, id); | } | catch(Throwable e) | { | logger.error("Could not find customer " + id,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Find customer | * @param id | * @param mustExist if true an exception will be thrown if the object does not exist. | * @return a customer object. | * @throws GenericServiceException | */ | @PermitAll | public Customer findCustomerById(int id, boolean mustExist) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Find customer " + id); | | if(mustExist) | { | Customer customer = new Customer(id); | em.refresh(customer); | return customer; | } | else | return em.find(Customer.class, id); | } | catch(Throwable e) | { | logger.error("Could not find customer " + id,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Find customer | * @param customer the customer to search for | * @return the customer object | * @throws GenericServiceException | */ | @PermitAll | public Customer findCustomerById(Customer customer) throws GenericServiceException | { | if(customer == null) | { | String errorMessage = "Can not search by using an empty object!"; | logger.warn(errorMessage); | throw new GenericServiceException(errorMessage); | } | | try | { | if(logger.isDebugEnabled()) | logger.debug("Find customer " + customer.getId()); | | return em.find(Customer.class,customer.getId()); | } | catch(Throwable e) | { | logger.error("Could not find customer " + customer.getId(),e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Remove all customers | * @return the number of removed customer objects | * @throws GenericServiceException | */ | @PermitAll | public long removeAllCustomers() throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Remove all customer objects!"); | | return em.createQuery("delete from Customer").executeUpdate(); | } | catch(Throwable e) | { | logger.error("Could not remove all customer objects!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Get all customers | * @return a collection of customers objects | * @throws GenericServiceException | */ | @PermitAll | public Collection<Customer> getAllCustomers() throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Find all customer objects!"); | | return (Collection<Customer>) em.createQuery("from Customer").getResultList(); | } | catch(Throwable e) | { | logger.error("Could not find customer objects!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Get all customers | * @param noOfObjects | * @param startIndex | * @return a collection of customer objects | * @throws GenericServiceException | */ | @PermitAll | public Collection<Customer> getAllCustomers(int noOfObjects, int startIndex) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Find all customer objects with paging!"); | | Query query = em.createQuery("from Customer"); | query.setMaxResults(noOfObjects); | query.setFirstResult(startIndex); | return (Collection<Customer>) query.getResultList(); | } | catch(Throwable e) | { | logger.error("Could not find customer objects with paging!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Remove customer | * @param id the identifier of the object to be removed | * @throws GenericServiceException | */ | @PermitAll | public void removeCustomer(int id) throws GenericServiceException | { | Customer customer; | | try | { | if(logger.isDebugEnabled()) | logger.debug("Remove customer " + id); | | customer = em.find(Customer.class,id); | } | catch(Throwable e) | { | logger.error("Could not remove customer " + id,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | if(customer == null) | { | String errorMessage = "Can not remove a non existing object!"; | logger.warn(errorMessage); | throw new GenericServiceException(errorMessage); | } | | try | { | em.remove(customer); | } | catch(Throwable e) | { | logger.error("Could not remove customer " + id,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Get customer | * @param name | * @return the customer object | * @throws GenericServiceException | */ | @PermitAll | public Customer getCustomerByName(String name) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Search for customer!"); | | String ejbQL = " from Customer a where a.name = :param1"; | Query query = em.createQuery(ejbQL); | query.setParameter("param1",name); | | return (Customer) query.getSingleResult(); | } | catch(Throwable e) | { | logger.error("Could not search for customer!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Search customer | * @param name | * @return a collection of customer objects | * @throws GenericServiceException | */ | @PermitAll | public Collection<Customer> searchCustomerByName(String name) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Search for customers!"); | | String ejbQL = " from Customer a where a.name like :param1"; | Query query = em.createQuery(ejbQL); | query.setParameter("param1",name); | | return (Collection<Customer>) query.getResultList(); | } | catch(Throwable e) | { | logger.error("Could not search for customers!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Search for customers objects via an ejb query string | * @param ejbQL the ejb query string | * @return a collection of customer objects | * @throws GenericServiceException | */ | @PermitAll | public Collection<Customer> searchCustomers(String ejbQL) throws GenericServiceException | { | if(ejbQL == null || ejbQL.equals("")) | { | String errorMessage = "Query string must not be empty!"; | logger.warn(errorMessage); | throw new GenericServiceException(errorMessage); | } | | try | { | if(logger.isDebugEnabled()) | logger.debug("Search for customer objects!"); | | return (Collection<Customer>) em.createQuery(ejbQL).getResultList(); | } | catch(Throwable e) | { | logger.error("Could not search for customers by using query: " + ejbQL,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Search for customers objects via an ejb query string | * @param ejbQL | * @param noOfObjects | * @param startIndex | * @return a collection of customer objects | * @throws GenericServiceException | */ | @PermitAll | public Collection<Customer> searchCustomers(String ejbQL, int noOfObjects, int startIndex) throws GenericServiceException | { | if(ejbQL == null || ejbQL.equals("")) | { | String errorMessage = "Query string must not be empty!"; | logger.warn(errorMessage); | throw new GenericServiceException(errorMessage); | } | | try | { | if(logger.isDebugEnabled()) | logger.debug("Search for customer objects!"); | | Query query = em.createQuery(ejbQL); | query.setMaxResults(noOfObjects); | query.setFirstResult(startIndex); | return (Collection<Customer>) query.getResultList(); | } | catch(Throwable e) | { | logger.error("Could not search for customers by using query: " + ejbQL,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Check if customer already exists | * @param id | * @return true if the customer already exists | * @throws GenericServiceException | */ | @PermitAll | public boolean checkCustomer(int id) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Check customer " + id + "!"); | | long counter = (Long) em.createQuery("select count(a) from Customer a where a.id = :param").setParameter("param",id).getSingleResult(); | | if(counter == 0) | return false; | | return true; | } | catch(Throwable e) | { | logger.error("Could not check customer!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Remove a list of customers | * @param customers a list of objects to be removed | * @throws GenericServiceException | */ | @PermitAll | public void removeCustomers(Collection<Customer> customers) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Remove a list of customers!"); | | for(Customer listItem : customers) | { | Customer customer = em.find(Customer.class,listItem.getId()); | em.remove(customer); | } | } | catch(Throwable e) | { | logger.error("Could not remove customers!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Persist a list of customers | * @param customers a list of objects to be persistet | * @return a list of persisted customers | * @throws GenericServiceException | */ | @PermitAll | public Collection<Customer> persistCustomers(Collection<Customer> customers) throws GenericServiceException | { | Collection<Customer> itemList = new ArrayList(); | try | { | if(logger.isDebugEnabled()) | logger.debug("Persist a list of customers!"); | | for(Customer item : customers) | { | em.persist(item); | itemList.add(item); | } | return itemList; | } | catch(Throwable e) | { | logger.error("Could not persist customers!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Merge a list of customers | * @param customers a list of objects to be merged | * @return a list of merged customers | * @throws GenericServiceException | */ | @PermitAll | public Collection<Customer> mergeCustomers(Collection<Customer> customers) throws GenericServiceException | { | Collection<Customer> itemList = new ArrayList(); | if(logger.isDebugEnabled()) | logger.debug("Merge a list of customers!"); | | try | { | for(Customer item : customers) | { | em.merge(item); | itemList.add(item); | } | return itemList; | } | catch(Throwable e) | { | logger.error("Could not merge customers!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Count customers | * @return the number of persistent customers | * @throws GenericServiceException | */ | @PermitAll | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public Long countCustomers() throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Count customers!"); | | return (Long) em.createQuery("select count (a) from Customer a").getSingleResult(); | } | catch(Throwable e) | { | logger.error("Could not count customers!",e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Count customers | * @param criteria the query criteria(s) | * @return the number of persistent customers | * @throws GenericServiceException | */ | @PermitAll | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public Long countCustomers(String criteria) throws GenericServiceException | { | if(criteria == null) | criteria = ""; | try | { | if(logger.isDebugEnabled()) | logger.debug("Count customers!"); | | if(criteria.toLowerCase().contains("where")) | return (Long) em.createQuery("select count (a) from Customer a " + criteria).getSingleResult(); | else | return (Long) em.createQuery("select count (a) from Customer a where " + criteria).getSingleResult(); | } | catch(Throwable e) | { | logger.error("Could not count customers by using criteria: " + criteria,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | /** | * Get country of this customer | * @param id | * @return the country of this customer | * @throws GenericServiceException | */ | @PermitAll | public Country getCountryOfCustomer(int id) throws GenericServiceException | { | try | { | if(logger.isDebugEnabled()) | logger.debug("Find country of customer " + id); | | return (Country) em.createQuery("select b from Customer a join a.country b where a.id =" + id).getSingleResult(); | } | catch(Throwable e) | { | logger.error("Could not find country of customer " + id,e); | throw new GenericServiceException(e.getMessage(),e.getCause()); | } | } | | } View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3971202#3971202 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3971202 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user