Sorry email prematurely sent.

Exception with some output showing where the code is breaking. The first
query using sessionManager in the test class runs, the second query in the
service using the genericDAO fails.

[TestNG] Running:
  Command line suite

[WARN ] (ConfigContext.java:257) - HSEARCH000075: Configuration setting
hibernate.search.lucene_version was not specified, using LUCENE_CURRENT.
[WARN ] (Config.java:360) - You should not use LUCENE_CURRENT as
luceneMatchVersion property: if you use this setting, and then Solr
upgrades to a newer release of Lucene, sizable changes may happen. If
precise back compatibility is important then you should instead explicitly
specify an actual Lucene version.
testSendEmailReport size 1
sendSupervisorReminderEmail start genericDAO query
[ERROR] (OperationTrackerImpl.java:192) - Service interface
org.hibernate.Session is matched by 2 services: FullTextSession, Session.
Automatic dependency resolution requires that exactly one service implement
the interface.
[ERROR] (OperationTrackerImpl.java:193) - Operations trace:
[ERROR] (OperationTrackerImpl.java:202) - [ 1] Reloading class
org.domain.etss.dao.impl.GenericDAOImpl.
[ERROR] (OperationTrackerImpl.java:202) - [ 2] Creating plan to instantiate
org.domain.etss.dao.impl.GenericDAOImpl via public
org.healthresearch.etss.dao.impl.GenericDAOImpl(org.hibernate.Session)
[ERROR] (OperationTrackerImpl.java:202) - [ 3] Determining injection value
for parameter #1 (org.hibernate.Session)
[ERROR] (OperationTrackerImpl.java:202) - [ 4] Resolving object of type
org.hibernate.Session using MasterObjectProvider

===============================================
Command line suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================

Java Result: 1


***** AppModuleTest *****


public class AppModuleTest {

    public static void bind(ServiceBinder binder) {
        try {
            ClassLoader contextClassLoader = Thread.currentThread().
getContextClassLoader();
            List<Class<?>> daos =
PackageEnumerator.getClassesForPackage("org.healthresearch.etss.dao");

            for (Class<?> dao : daos) {
                String pkg = dao.getPackage().getName();
                String cls = dao.getSimpleName();

                try {
                    Class impl = contextClassLoader.loadClass(pkg +
".impl." + cls + "Impl");
                    binder.bind(dao, impl);
                } catch (ClassNotFoundException e) {
                    // Ignore, we just won't bind that class.
                }
            }
        } catch (ClassNotFoundException e) {
        }

        // binder.bind(MyServiceInterface.class, MyServiceImpl.class);
        binder.bind(UserInfoService.class, UserInfoServiceImpl.class);
        binder.bind(TimeSheetService.class, TimeSheetServiceImpl.class);
        binder.bind(TsLogService.class, TsLogServiceImpl.class);
        binder.bind(ApplicationStateService.class,
ApplicationStateServiceImpl.class);
        binder.bind(PropertyAccessService.class,
PropertyAccessServiceImpl.class);
        binder.bind(ListModelFactory.class, ListModelFactoryImpl.class);

        //Search services
        binder.bind(SearchService.class, SearchServiceImpl.class);
        binder.bind(TimeSheetSearchService.class,
TimeSheetSearchServiceImpl.class);
        binder.bind(EmployeeProfileSearchService.class,
EmployeeProfileSearchServiceImpl.class);
        binder.bind(UserProfileSearchService.class,
UserProfileSearchServiceImpl.class);
        binder.bind(HrPersonnelMasterSearch.class,
HrPersonnelMasterSearchImpl.class);
        binder.bind(AccrualSearchService.class,
AccrualSearchServiceImpl.class);

        binder.bind(LDAPQueue.class, LDAPQueueImpl.class);
        binder.bind(ScheduleJobs.class, ScheduleJobsImpl.class);
        binder.bind(EmployeeProfileService.class,
EmployeeProfileServiceImpl.class);
        binder.bind(AccrualBalanceService.class,
AccrualBalanceServiceImpl.class);
        binder.bind(HolidayService.class, HolidayServiceImpl.class);
        binder.bind(OfficeLocationService.class,
OfficeLocationServiceImpl.class);
        binder.bind(CompOTService.class, CompOTServiceImpl.class);
        binder.bind(DateCheckingService.class,
DateCheckingServiceImpl.class);
        binder.bind(TimeSheetValidationService.class,
TimeSheetValidationServiceImpl.class);

        // MailServices
        binder.bind(EmailService.class, EmailServiceImpl.class);
        binder.bind(JavaxMailService.class, JavaxMailServiceImpl.class);
        binder.bind(EmailHelper.class, EmailHelperImpl.class);
        binder.bind(ProfileValidationService.class,
ProfileValidationServiceImpl.class);
        binder.bind(GenericValidationService.class,
GenericValidationServiceImpl.class);
        binder.bind(WarningService.class, WarningServiceImpl.class);
        binder.bind(Indexer.class, IndexerImpl.class);

        binder.bind(ImportJob.class, ImportJobImpl.class);
        binder.bind(PDFService.class,
PDFServiceImpl.class).scope(ScopeConstants.PERTHREAD);

    }

    public static void
contributeApplicationDefaults(MappedConfiguration<String, Object>
configuration, Logger logger) throws IOException {
        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");

configuration.add(HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED,
"true");
    }

    public static void
contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer>
configuration) {
        configuration.add("trecstest1", new TestHibernateConfigurer());
    }

    public static void
contributeHibernateEntityPackageManager(org.apache.tapestry5.ioc.Configuration<String>
config) {
        config.add("org.healthresearch.etss.entities");
    }

    @Scope(ScopeConstants.PERTHREAD)
    public static FullTextSession
buildFullTextSession(HibernateSessionManager sessionManager) {
        return Search.getFullTextSession(sessionManager.getSession());
    }

    /**
     * This is a service definition, the service will be named
"TimingFilter".
     * The interface, RequestFilter, is used within the RequestHandler
service
     * pipeline, which is built from the RequestHandler service
configuration.
     * Tapestry IoC is responsible for passing in an appropriate Logger
     * instance. Requests for static resources are handled at a higher
level, so
     * this filter will only be invoked for Tapestry related requests.
     * <p/>
     * <
     * p/>
     * Service builder methods are useful when the implementation is inline
as
     * an inner class (as here) or require some other kind of special
     * initialization. In most cases, use the static bind() method instead.
     * <p/>
     * <
     * p/>
     * If this method was named "build", then the service id would be taken
from
     * the service interface and would be "RequestFilter". Since Tapestry
     * already defines a service named "RequestFilter" we use an explicit
     * service id that we can reference inside the contribution method.
     */
    public RequestFilter buildTimingFilter(final Logger log) {
        return new RequestFilter() {
            public boolean service(Request request, Response response,
RequestHandler handler)
                    throws IOException {
                long startTime = System.currentTimeMillis();
                try {
// The responsibility of a filter is to invoke the corresponding method
// in the handler. When you chain multiple filters together, each filter
// received a handler that is a bridge to the next filter.
                    return handler.service(request, response);
                } finally {
                    long elapsed = System.currentTimeMillis() - startTime;
                    log.info(String.format("Request time: %d ms", elapsed));
                }
            }
        };
    }

    public static void
contributeApplicationDefaults(MappedConfiguration<String, Object> config) {
        config.add(HibernateSymbols.DEFAULT_CONFIGURATION, false);
    }

    @Match("*DAO")
    public static void adviseTransactions(HibernateTransactionAdvisor
advisor, MethodAdviceReceiver receiver) {
        advisor.addTransactionCommitAdvice(receiver);
    }
}


***** RegisteryBuilderTest  *****

public abstract class RegisteryBuilderTest {

    protected final Registry buildRegistry(Class... moduleClasses) {
        RegistryBuilder builder = new RegistryBuilder();
        builder.add(moduleClasses);
        return builder.build();
    }

    protected abstract void cleanup();
}


***** EmailServiceImplTest *****


public class EmailServiceImplTest extends RegisteryBuilderTest {

    private Registry registry;
    private HibernateSessionManager sessionManager;
    private EmailService emailService;


    @BeforeClass
    protected void before() {
        registry = buildRegistry(AppModuleTest.class,
HibernateCoreModule.class);
        emailService = registry.getService(EmailService.class);
        sessionManager = registry.getService(HibernateSessionManager.class);

        buildData();
    }

    /**
     * Test of sendEmailReport method, of class EmailServiceImpl.
     */
    @Test
    public void testSendEmailReport() {
        List<TimeSheetEntity> timeSheets =
getCurrentSession().createCriteria(TimeSheetEntity.class)
                .createAlias("formState", "formState")
                .add(Restrictions.eq("formState.stateCode",
ETSSEnum.STATE_SUPERVISOR_REVIEW)).list();

        System.out.println("testSendEmailReport size " + timeSheets.size());

        emailService.sendSupervisorReminderEmail(timeSheets);

        //assertEquals(timeSheets.size(), 1);
    }

    public Session getCurrentSession() {
        return sessionManager.getSession();
    }

    public void buildData() {
        FormStateEntity state1 = getFormState("draft");
        FormStateEntity state2 =
getFormState(ETSSEnum.STATE_SUPERVISOR_REVIEW);
        FormStateEntity state3 = getFormState("final");

        WorksiteEntity worksite = getWorksite("menands");

        UserProfile userProfileTest1 = getUserProfile(1L, "xxx07",
"First1", "Last1", "M", "xx...@domain.org");
        UserProfile userProfileTest2 = getUserProfile(2L, "xxx02",
"First2", "Last2", "A", "xx...@domain.org");
        UserProfile userProfileTest3 = getUserProfile(3L, "xxx07",
"First3", "Last3", "B", "x...@domain.org");
        UserProfile userProfileTest4 = getUserProfile(4L, "xxx06",
"First4", "Last4", "C", "xx...@domain.org");
        UserProfile userProfileTest5 = getUserProfile(5L, "xxx01",
"First5", "Last5", "D", "xx...@domain.org");

        EmployeeProfile employeeTest1 = getEmployeeProfile(1L,
userProfileTest1, userProfileTest2, userProfileTest3, "emp12222");
        EmployeeProfile employeeTest2 = getEmployeeProfile(2L,
userProfileTest2, userProfileTest2, userProfileTest3, "emp23333");
        EmployeeProfile employeeTest3 = getEmployeeProfile(3L,
userProfileTest3, userProfileTest2, userProfileTest3, "emp34444");
        EmployeeProfile employeeTest4 = getEmployeeProfile(4L,
userProfileTest4, userProfileTest5, userProfileTest3, "emp45555");
        EmployeeProfile employeeTest5 = getEmployeeProfile(5L,
userProfileTest5, null, userProfileTest5, "emp56666");

        getTimeSheet(1L, employeeTest1, userProfileTest2, userProfileTest3,
"emp12222", state1, "xxx07", worksite);
        getTimeSheet(2L, employeeTest2, userProfileTest2, userProfileTest3,
"emp23333", state1, "xxx02", worksite);
        getTimeSheet(3L, employeeTest3, userProfileTest2, userProfileTest3,
"emp34444", state3, "xxx07", worksite);
        getTimeSheet(4L, employeeTest4, null, userProfileTest5, "emp45555",
state3, "xxx06", worksite);
        getTimeSheet(5L, employeeTest5, null, userProfileTest5, "emp56666",
state2, "xxx01", worksite);

        sessionManager.commit();
    }


    public FormStateEntity getFormState(String value) {
        FormStateEntity formState = new FormStateEntity();
        formState.setName(value);
        formState.setStateCode(value);
        getCurrentSession().save(formState);
        return formState;
    }

    public EmployeeProfile getEmployeeProfile(Long id, UserProfile
userProfile, UserProfile manager, UserProfile supervisor, String empId) {
        EmployeeProfile employeeProfile = new EmployeeProfile();
        employeeProfile.setId(id);
        employeeProfile.setUserProfile(userProfile);
        employeeProfile.setSupervisor(supervisor);
        employeeProfile.setManager(manager);
        employeeProfile.setEmpId(empId);
        getCurrentSession().save(employeeProfile);
        return employeeProfile;
    }

    public UserProfile getUserProfile(Long id, String shortname, String
firstName, String lastName, String middleInitial, String email) {
        UserProfile userProfile = new UserProfile();
        userProfile.setId(id);
        userProfile.setShortname(shortname);
        userProfile.setFirstName(firstName);
        userProfile.setLastName(lastName);
        userProfile.setMiddleInitial(middleInitial);
        userProfile.setEmail(email);
        getCurrentSession().save(userProfile);
        return userProfile;
    }

    public TimeSheetEntity getTimeSheet(Long id, EmployeeProfile employee,
UserProfile manager,
                                        UserProfile supervisor, String
empId, FormStateEntity formState, String shortName, WorksiteEntity
worksite) {
        TimeSheetEntity timeSheetEntity = new TimeSheetEntity();
        timeSheetEntity.setId(id);
        timeSheetEntity.setEmpId(empId);
        timeSheetEntity.setEmployeeProfile(employee);
        timeSheetEntity.setSupervisor(supervisor);
        timeSheetEntity.setSupervisorOriginal(supervisor);
        timeSheetEntity.setManager(manager);
        timeSheetEntity.setEndDate(new Date());
        timeSheetEntity.setFormState(formState);
        timeSheetEntity.setShortname(shortName);
        timeSheetEntity.setWorksite(worksite);
        getCurrentSession().save(timeSheetEntity);
        return timeSheetEntity;
    }

    public WorksiteEntity getWorksite(String worksite) {
        WorksiteEntity worksiteEntity = new WorksiteEntity();
        worksiteEntity.setLocation(worksite);
        getCurrentSession().save(worksiteEntity);
        return worksiteEntity;
    }

    @Override
    @AfterClass
    protected void cleanup() {
        registry.cleanupThread();
        registry.shutdown();
    }
}



***** EmailServiceImpl *****



public class EmailServiceImpl implements EmailService {

    private final GenericDAO genericDAO;

    public EmailServiceImpl() {GenericDAO genericDAO) {
         this.genericDAO = genericDAO;
    }

public void sendSupervisorReminderEmail(List<TimeSheetEntity> timeSheets) {
            System.out.println("start genericDAO query");
            List<TimeSheetEntity> results =
genericDAO.getAll(TimeSheetEntity.class);
            System.out.println("result size " + results.size());
}



***** GenericDAOImpl *****



public class GenericDAOImpl implements GenericDAO {

    private final Session session;

    public GenericDAOImpl(Session session) {
        this.session = session;
    }

    @Override
    public <T> List<T> getFind(final Class<T> type) {
        return session.createCriteria(type).list();
    }
}


On Wed, Sep 10, 2014 at 8:47 AM, George Christman <gchrist...@cardaddy.com>
wrote:

> Hi Lance, I hear ya, same here.
>
> Okay I'm going to provide all the code and the full exception.
>
>
> ***** AppModuleTest *****
>
>
> public class AppModuleTest {
>
>     public static void bind(ServiceBinder binder) {
>         try {
>             ClassLoader contextClassLoader =
> Thread.currentThread().getContextClassLoader();
>             List<Class<?>> daos =
> PackageEnumerator.getClassesForPackage("org.healthresearch.etss.dao");
>
>             for (Class<?> dao : daos) {
>                 String pkg = dao.getPackage().getName();
>                 String cls = dao.getSimpleName();
>
>                 try {
>                     Class impl = contextClassLoader.loadClass(pkg +
> ".impl." + cls + "Impl");
>                     binder.bind(dao, impl);
>                 } catch (ClassNotFoundException e) {
>                     // Ignore, we just won't bind that class.
>                 }
>             }
>         } catch (ClassNotFoundException e) {
>         }
>
>         // binder.bind(MyServiceInterface.class, MyServiceImpl.class);
>         binder.bind(UserInfoService.class, UserInfoServiceImpl.class);
>         binder.bind(TimeSheetService.class, TimeSheetServiceImpl.class);
>         binder.bind(TsLogService.class, TsLogServiceImpl.class);
>         binder.bind(ApplicationStateService.class,
> ApplicationStateServiceImpl.class);
>         binder.bind(PropertyAccessService.class,
> PropertyAccessServiceImpl.class);
>         binder.bind(ListModelFactory.class, ListModelFactoryImpl.class);
>
>         //Search services
>         binder.bind(SearchService.class, SearchServiceImpl.class);
>         binder.bind(TimeSheetSearchService.class,
> TimeSheetSearchServiceImpl.class);
>         binder.bind(EmployeeProfileSearchService.class,
> EmployeeProfileSearchServiceImpl.class);
>         binder.bind(UserProfileSearchService.class,
> UserProfileSearchServiceImpl.class);
>         binder.bind(HrPersonnelMasterSearch.class,
> HrPersonnelMasterSearchImpl.class);
>         binder.bind(AccrualSearchService.class,
> AccrualSearchServiceImpl.class);
>
>         binder.bind(LDAPQueue.class, LDAPQueueImpl.class);
>         binder.bind(ScheduleJobs.class, ScheduleJobsImpl.class);
>         binder.bind(EmployeeProfileService.class,
> EmployeeProfileServiceImpl.class);
>         binder.bind(AccrualBalanceService.class,
> AccrualBalanceServiceImpl.class);
>         binder.bind(HolidayService.class, HolidayServiceImpl.class);
>         binder.bind(OfficeLocationService.class,
> OfficeLocationServiceImpl.class);
>         binder.bind(CompOTService.class, CompOTServiceImpl.class);
>         binder.bind(DateCheckingService.class,
> DateCheckingServiceImpl.class);
>         binder.bind(TimeSheetValidationService.class,
> TimeSheetValidationServiceImpl.class);
>
>         // MailServices
>         binder.bind(EmailService.class, EmailServiceImpl.class);
>         binder.bind(JavaxMailService.class, JavaxMailServiceImpl.class);
>         binder.bind(EmailHelper.class, EmailHelperImpl.class);
>         binder.bind(ProfileValidationService.class,
> ProfileValidationServiceImpl.class);
>         binder.bind(GenericValidationService.class,
> GenericValidationServiceImpl.class);
>         binder.bind(WarningService.class, WarningServiceImpl.class);
>         binder.bind(Indexer.class, IndexerImpl.class);
>
>         binder.bind(ImportJob.class, ImportJobImpl.class);
>         binder.bind(PDFService.class,
> PDFServiceImpl.class).scope(ScopeConstants.PERTHREAD);
>
>     }
>
>     public static void
> contributeApplicationDefaults(MappedConfiguration<String, Object>
> configuration, Logger logger) throws IOException {
>         configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
>
> configuration.add(HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED,
> "true");
>     }
>
>     public static void
> contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer>
> configuration) {
>         configuration.add("trecstest1", new TestHibernateConfigurer());
>     }
>
>     public static void
> contributeHibernateEntityPackageManager(org.apache.tapestry5.ioc.Configuration<String>
> config) {
>         config.add("org.healthresearch.etss.entities");
>     }
>
>     @Scope(ScopeConstants.PERTHREAD)
>     public static FullTextSession
> buildFullTextSession(HibernateSessionManager sessionManager) {
>         return Search.getFullTextSession(sessionManager.getSession());
>     }
>
>     /**
>      * This is a service definition, the service will be named
> "TimingFilter".
>      * The interface, RequestFilter, is used within the RequestHandler
> service
>      * pipeline, which is built from the RequestHandler service
> configuration.
>      * Tapestry IoC is responsible for passing in an appropriate Logger
>      * instance. Requests for static resources are handled at a higher
> level, so
>      * this filter will only be invoked for Tapestry related requests.
>      * <p/>
>      * <
>      * p/>
>      * Service builder methods are useful when the implementation is
> inline as
>      * an inner class (as here) or require some other kind of special
>      * initialization. In most cases, use the static bind() method instead.
>      * <p/>
>      * <
>      * p/>
>      * If this method was named "build", then the service id would be
> taken from
>      * the service interface and would be "RequestFilter". Since Tapestry
>      * already defines a service named "RequestFilter" we use an explicit
>      * service id that we can reference inside the contribution method.
>      */
>     public RequestFilter buildTimingFilter(final Logger log) {
>         return new RequestFilter() {
>             public boolean service(Request request, Response response,
> RequestHandler handler)
>                     throws IOException {
>                 long startTime = System.currentTimeMillis();
>                 try {
> // The responsibility of a filter is to invoke the corresponding method
> // in the handler. When you chain multiple filters together, each filter
> // received a handler that is a bridge to the next filter.
>                     return handler.service(request, response);
>                 } finally {
>                     long elapsed = System.currentTimeMillis() - startTime;
>                     log.info(String.format("Request time: %d ms",
> elapsed));
>                 }
>             }
>         };
>     }
>
>     public static void
> contributeApplicationDefaults(MappedConfiguration<String, Object> config) {
>         config.add(HibernateSymbols.DEFAULT_CONFIGURATION, false);
>     }
>
>     @Match("*DAO")
>     public static void adviseTransactions(HibernateTransactionAdvisor
> advisor, MethodAdviceReceiver receiver) {
>         advisor.addTransactionCommitAdvice(receiver);
>     }
> }
>
>
> ***** RegisteryBuilderTest  *****
>
> public abstract class RegisteryBuilderTest {
>
>     protected final Registry buildRegistry(Class... moduleClasses) {
>         RegistryBuilder builder = new RegistryBuilder();
>         builder.add(moduleClasses);
>         return builder.build();
>     }
>
>     protected abstract void cleanup();
> }
>
>
> ***** EmailServiceImplTest *****
>
>
> public class EmailServiceImplTest extends RegisteryBuilderTest {
>
>     private Registry registry;
>     private HibernateSessionManager sessionManager;
>     private EmailService emailService;
>
>
>     @BeforeClass
>     protected void before() {
>         registry = buildRegistry(AppModuleTest.class,
> HibernateCoreModule.class);
>         emailService = registry.getService(EmailService.class);
>         sessionManager =
> registry.getService(HibernateSessionManager.class);
>
>         buildData();
>     }
>
>     /**
>      * Test of sendEmailReport method, of class EmailServiceImpl.
>      */
>     @Test
>     public void testSendEmailReport() {
>         List<TimeSheetEntity> timeSheets =
> getCurrentSession().createCriteria(TimeSheetEntity.class)
>                 .createAlias("formState", "formState")
>                 .add(Restrictions.eq("formState.stateCode",
> ETSSEnum.STATE_SUPERVISOR_REVIEW)).list();
>
>         emailService.sendSupervisorReminderEmail(timeSheets);
>
>         //assertEquals(timeSheets.size(), 1);
>     }
>
>     public Session getCurrentSession() {
>         return sessionManager.getSession();
>     }
>
>     public void buildData() {
>         FormStateEntity state1 = getFormState("draft");
>         FormStateEntity state2 =
> getFormState(ETSSEnum.STATE_SUPERVISOR_REVIEW);
>         FormStateEntity state3 = getFormState("final");
>
>         WorksiteEntity worksite = getWorksite("menands");
>
>         UserProfile userProfileTest1 = getUserProfile(1L, "xxx07",
> "First1", "Last1", "M", "xx...@domain.org");
>         UserProfile userProfileTest2 = getUserProfile(2L, "xxx02",
> "First2", "Last2", "A", "xx...@domain.org");
>         UserProfile userProfileTest3 = getUserProfile(3L, "xxx07",
> "First3", "Last3", "B", "x...@domain.org");
>         UserProfile userProfileTest4 = getUserProfile(4L, "xxx06",
> "First4", "Last4", "C", "xx...@domain.org");
>         UserProfile userProfileTest5 = getUserProfile(5L, "xxx01",
> "First5", "Last5", "D", "xx...@domain.org");
>
>         EmployeeProfile employeeTest1 = getEmployeeProfile(1L,
> userProfileTest1, userProfileTest2, userProfileTest3, "emp12222");
>         EmployeeProfile employeeTest2 = getEmployeeProfile(2L,
> userProfileTest2, userProfileTest2, userProfileTest3, "emp23333");
>         EmployeeProfile employeeTest3 = getEmployeeProfile(3L,
> userProfileTest3, userProfileTest2, userProfileTest3, "emp34444");
>         EmployeeProfile employeeTest4 = getEmployeeProfile(4L,
> userProfileTest4, userProfileTest5, userProfileTest3, "emp45555");
>         EmployeeProfile employeeTest5 = getEmployeeProfile(5L,
> userProfileTest5, null, userProfileTest5, "emp56666");
>
>         getTimeSheet(1L, employeeTest1, userProfileTest2,
> userProfileTest3, "emp12222", state1, "xxx07", worksite);
>         getTimeSheet(2L, employeeTest2, userProfileTest2,
> userProfileTest3, "emp23333", state1, "xxx02", worksite);
>         getTimeSheet(3L, employeeTest3, userProfileTest2,
> userProfileTest3, "emp34444", state3, "xxx07", worksite);
>         getTimeSheet(4L, employeeTest4, null, userProfileTest5,
> "emp45555", state3, "xxx06", worksite);
>         getTimeSheet(5L, employeeTest5, null, userProfileTest5,
> "emp56666", state2, "xxx01", worksite);
>
>         sessionManager.commit();
>     }
>
>
>     public FormStateEntity getFormState(String value) {
>         FormStateEntity formState = new FormStateEntity();
>         formState.setName(value);
>         formState.setStateCode(value);
>         getCurrentSession().save(formState);
>         return formState;
>     }
>
>     public EmployeeProfile getEmployeeProfile(Long id, UserProfile
> userProfile, UserProfile manager, UserProfile supervisor, String empId) {
>         EmployeeProfile employeeProfile = new EmployeeProfile();
>         employeeProfile.setId(id);
>         employeeProfile.setUserProfile(userProfile);
>         employeeProfile.setSupervisor(supervisor);
>         employeeProfile.setManager(manager);
>         employeeProfile.setEmpId(empId);
>         getCurrentSession().save(employeeProfile);
>         return employeeProfile;
>     }
>
>     public UserProfile getUserProfile(Long id, String shortname, String
> firstName, String lastName, String middleInitial, String email) {
>         UserProfile userProfile = new UserProfile();
>         userProfile.setId(id);
>         userProfile.setShortname(shortname);
>         userProfile.setFirstName(firstName);
>         userProfile.setLastName(lastName);
>         userProfile.setMiddleInitial(middleInitial);
>         userProfile.setEmail(email);
>         getCurrentSession().save(userProfile);
>         return userProfile;
>     }
>
>     public TimeSheetEntity getTimeSheet(Long id, EmployeeProfile employee,
> UserProfile manager,
>                                         UserProfile supervisor, String
> empId, FormStateEntity formState, String shortName, WorksiteEntity
> worksite) {
>         TimeSheetEntity timeSheetEntity = new TimeSheetEntity();
>         timeSheetEntity.setId(id);
>         timeSheetEntity.setEmpId(empId);
>         timeSheetEntity.setEmployeeProfile(employee);
>         timeSheetEntity.setSupervisor(supervisor);
>         timeSheetEntity.setSupervisorOriginal(supervisor);
>         timeSheetEntity.setManager(manager);
>         timeSheetEntity.setEndDate(new Date());
>         timeSheetEntity.setFormState(formState);
>         timeSheetEntity.setShortname(shortName);
>         timeSheetEntity.setWorksite(worksite);
>         getCurrentSession().save(timeSheetEntity);
>         return timeSheetEntity;
>     }
>
>     public WorksiteEntity getWorksite(String worksite) {
>         WorksiteEntity worksiteEntity = new WorksiteEntity();
>         worksiteEntity.setLocation(worksite);
>         getCurrentSession().save(worksiteEntity);
>         return worksiteEntity;
>     }
>
>     @Override
>     @AfterClass
>     protected void cleanup() {
>         registry.cleanupThread();
>         registry.shutdown();
>     }
> }
>
>
> public class EmailServiceImpl implements EmailService {
>
>     private final GenericDAO genericDAO;
>
>     public EmailServiceImpl() {
>
>
> }
>
> On Wed, Sep 10, 2014 at 2:35 AM, Lance Java <lance.j...@googlemail.com>
> wrote:
>
>> Hmm, very strange. Are you calling registry.shutdown() ever?
>>
>> Is this perhaps an issue with registry.cleanupThread()?
>>
>> How many @Test annotations in the class? Does the first @Test work and the
>> second fail?
>>
>> Just grasping at straws here!
>> On 10 Sep 2014 02:05, "George Christman" <gchrist...@cardaddy.com> wrote:
>>
>> > Hi lance, I'm just using constructor injection. I have a DAO that uses
>> >
>> > public class GenericDAO {
>> >     private final Session session;
>> >
>> >     public GenericDAOImpl(Session session) {
>> >         this.session = session;
>> >     }
>> >
>> > }
>> >
>> > in my Module I have
>> >
>> > @Scope(ScopeConstants.
>> > PERTHREAD)
>> >     public static FullTextSession
>> > buildFullTextSession(HibernateSessionManager sessionManager) {
>> >         return Search.getFullTextSession(sessionManager.getSession());
>> >     }
>> >
>> > In my test class
>> >
>> > private Registry registry;
>> >     private GenericDAO genericDAO;
>> >     private EmailService emailService;
>> >
>> >     @BeforeClass
>> >     protected void before() {
>> >         registry = buildRegistry(AppModuleTest.
>> > class, HibernateCoreModule.class);
>> >         emailService = registry.getService(EmailService.class);
>> >         genericDAO = registry.getService(GenericDAO.class);
>> >         buildData();
>> >     }
>> >
>> > @Test
>> > public void SomeTest() {
>> >      genericDAO.get(...)
>> > }
>> >
>> > When I run the test I get that exception.
>> >
>> > If I remove FullTextSession from the module or the genericDAO, problem
>> goes
>> > away. The strange part is this is not an issue with the rest of the app,
>> > only the test.
>> >
>> >
>> > On Tue, Sep 9, 2014 at 2:31 PM, Lance Java <lance.j...@googlemail.com>
>> > wrote:
>> >
>> > > From my understanding of the tapestry registry, these are two distinct
>> > > services (even though one extends the other).
>> > >
>> > > Where is this exception occurring? Are you using tapestry's @Inject
>> > > annotation? Is spring ioc in the mix somewhere?
>> > >
>> >
>> >
>> >
>> > --
>> > George Christman
>> > www.CarDaddy.com
>> > P.O. Box 735
>> > Johnstown, New York
>> >
>>
>
>
>
> --
> George Christman
> www.CarDaddy.com
> P.O. Box 735
> Johnstown, New York
>
>


-- 
George Christman
www.CarDaddy.com
P.O. Box 735
Johnstown, New York

Reply via email to