// Path: src/test/java/com/example/dao/WidgetDao.java
// public interface WidgetDao {
// 
//     /**
//      * @return {@link List}&lt;{@link Widget}&gt;
//      */
//     List<Widget> listAll();
// 
//     /**
//      * @param id
//      *        the widget id
//      * @return {@link Widget}
//      */
//     Widget findById(int id);
// 
//     /**
//      * @param name
//      *        the widget name
//      * @return {@link Widget}
//      */
//     Widget findByName(String name);
// 
// }
// 
// Path: src/test/java/com/example/model/Widget.java
// @Entity
// @NamedQueries({
//   @NamedQuery(name = Widget.LIST_ALL, query = "SELECT w FROM Widget w"),
//   @NamedQuery(name = Widget.FIND_BY_ID, query = "SELECT w FROM Widget w WHERE w.id = :id"),
//   @NamedQuery(name = Widget.FIND_BY_NAME, query = "SELECT w FROM Widget w WHERE w.name = :name")
// })
// public class Widget implements Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = -1689099836716604893L;
// 
//     /**
//      * {@value #LIST_ALL}
//      */
//     public static final String LIST_ALL = "Widget.listAll";
// 
//     /**
//      * {@value #FIND_BY_ID}
//      */
//     public static final String FIND_BY_ID = "Widget.findById";
// 
//     /**
//      * {@value #FIND_BY_NAME}
//      */
//     public static final String FIND_BY_NAME = "Widget.findByName";
// 
//     @Id
//     private Integer id;
// 
//     @Column
//     private String name;
// 
//     /**
//      * @return the id
//      */
//     public final Integer getId() {
//         return id;
//     }
// 
//     /**
//      * @param id
//      *        the id to set
//      */
//     public final void setId(final Integer id) {
//         this.id = id;
//     }
// 
//     /**
//      * @return the name
//      */
//     public final String getName() {
//         return name;
//     }
// 
//     /**
//      * @param name
//      *        the name to set
//      */
//     public final void setName(final String name) {
//         this.name = name;
//     }
// 
// }


import java.util.List;
import javax.persistence.EntityManager;
import com.example.dao.WidgetDao;
import com.example.model.Widget;
/**
 * junit-rules: JUnit Rules Library
 *
 * Copyright (c) 2009-2011 by Alistair A. Israel.
 * This software is made available under the terms of the MIT License.
 *
 * Created Oct 22, 2009
 */
package com.example.dao.jpa;




/**
 * @author Alistair A. Israel
 */
public class JpaWidgetDao implements WidgetDao {

    private final EntityManager entityManager;

    /**
     * @param entityManager
     *        the {@link EntityManager}
     */
    public JpaWidgetDao(final EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    /**
     * {@inheritDoc}
     *
     * @see com.example.dao.WidgetDao#findById(int)
     */
    @Override
    public final Widget findById(final int id) {
        return entityManager.find(Widget.class, id);
    }

    /**
     * {@inheritDoc}
     *
     * @see com.example.dao.WidgetDao#findByName(java.lang.String)
     */
    @Override
// Path: src/test/java/com/example/dao/WidgetDao.java
// public interface WidgetDao {
// 
//     /**
//      * @return {@link List}&lt;{@link Widget}&gt;
//      */
//     List<Widget> listAll();
// 
//     /**
//      * @param id
//      *        the widget id
//      * @return {@link Widget}
//      */
//     Widget findById(int id);
// 
//     /**
//      * @param name
//      *        the widget name
//      * @return {@link Widget}
//      */
//     Widget findByName(String name);
// 
// }
// 
// Path: src/test/java/com/example/model/Widget.java
// @Entity
// @NamedQueries({
//   @NamedQuery(name = Widget.LIST_ALL, query = "SELECT w FROM Widget w"),
//   @NamedQuery(name = Widget.FIND_BY_ID, query = "SELECT w FROM Widget w WHERE w.id = :id"),
//   @NamedQuery(name = Widget.FIND_BY_NAME, query = "SELECT w FROM Widget w WHERE w.name = :name")
// })
// public class Widget implements Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = -1689099836716604893L;
// 
//     /**
//      * {@value #LIST_ALL}
//      */
//     public static final String LIST_ALL = "Widget.listAll";
// 
//     /**
//      * {@value #FIND_BY_ID}
//      */
//     public static final String FIND_BY_ID = "Widget.findById";
// 
//     /**
//      * {@value #FIND_BY_NAME}
//      */
//     public static final String FIND_BY_NAME = "Widget.findByName";
// 
//     @Id
//     private Integer id;
// 
//     @Column
//     private String name;
// 
//     /**
//      * @return the id
//      */
//     public final Integer getId() {
//         return id;
//     }
// 
//     /**
//      * @param id
//      *        the id to set
//      */
//     public final void setId(final Integer id) {
//         this.id = id;
//     }
// 
//     /**
//      * @return the name
//      */
//     public final String getName() {
//         return name;
//     }
// 
//     /**
//      * @param name
//      *        the name to set
//      */
//     public final void setName(final String name) {
//         this.name = name;
//     }
// 
// }


// Path: src/test/java/com/example/dao/jpa/JpaWidgetDao.java
import java.util.List;
import javax.persistence.EntityManager;
import com.example.dao.WidgetDao;
import com.example.model.Widget;

/**
 * junit-rules: JUnit Rules Library
 *
 * Copyright (c) 2009-2011 by Alistair A. Israel.
 * This software is made available under the terms of the MIT License.
 *
 * Created Oct 22, 2009
 */
package com.example.dao.jpa;




/**
 * @author Alistair A. Israel
 */
public class JpaWidgetDao implements WidgetDao {

    private final EntityManager entityManager;

    /**
     * @param entityManager
     *        the {@link EntityManager}
     */
    public JpaWidgetDao(final EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    /**
     * {@inheritDoc}
     *
     * @see com.example.dao.WidgetDao#findById(int)
     */
    @Override
    public final Widget findById(final int id) {
        return entityManager.find(Widget.class, id);
    }

    /**
     * {@inheritDoc}
     *
     * @see com.example.dao.WidgetDao#findByName(java.lang.String)
     */
    @Override
    @SuppressWarnings("unchecked")