So, I'm now on 5.04 and I re-read the documentation about ioc to be
sure I didn't do a mistake when I declared my service.

The module is final and follow the naming convention:

package papo.ioc.services;
public final class UserModule {
 public UserService build() {
   return new UserServiceImpl();
 }
}

And I declared it in the MANIFEST.MF under webroot/META-INF :

Manifest-Version: 1.0
Tapestry-Module-Classes: papo.ioc.services.UserModule

The service interface seems ok:

package papo.ioc.services;
import papo.exception.PapoException;
import papo.model.User;
public interface UserService {
 public User getAuthenticatedUser(String login, String password)
throws PapoException;
}

The implementation looks normal:

package papo.ioc.services;

import org.apache.log4j.Logger;
import papo.dao.UserDao;
import papo.exception.PapoException;
import papo.model.User;

public class UserServiceImpl implements UserService {
 /** Obtain a suitable logger */
 private static Logger logger =
Logger.getLogger(UserServiceImpl.class.getName());

 public User getAuthenticatedUser(String login, String password)
throws PapoException {
   UserDao dao = new UserDao();
   User user = null;
   try {
     user = dao.searchUser(login, password);
   }
   catch (PapoException pe) {
     logger.error("The authentication has failed !!", pe);
     throw new PapoException("The authentication has failed !!");
   }
   return user;
 }
}


and the I use it in my Start page:

 @Inject
 @Service("UserService")
 private UserService _userService;

 String onSuccess() {
   String success = "Home";
   String failure = "Start";
   try {
     _user = _userService.getAuthenticatedUser(_login.getLogin(),
_login.getPassword());
   }
   catch (PapoException pe) {
     _message = "La procedure d'identification a rencontré un probleme !!";
     return failure;
  }
  return success;
}

But I still have the error :

java.lang.ClassNotFoundException

caught an exception while obtaining a class file for papo.pages.Start
exception
java.lang.RuntimeException: Error obtaining injected value for field
papo.pages.Start._userService: No service implements the interface
papo.ioc.services.UserService.

What can I try now?

2007/5/29, Blackwings <[EMAIL PROTECTED]>:

I was using the 5.03. I just changed for the 5.04 then I tried your proposition 
:

"No service implements the interface papo.ioc.services.UserService."

But my implementation, UserServiceImpl is in the same package than its 
interface UserService and implements it.
The module UserModule that contains the buildUserService method and return the 
UserService is also in this package...

What did I miss??


2007/5/29, Davor Hrg <[EMAIL PROTECTED]>:

> try:
> @Inject
> private UserService _userService;
>
> you haven't mentioned the version
> code above is for 5.0.4, I'm not sure for older versions
>
> Davor Hrg
>
> On 5/29/07, Blackwings <[EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >
> > I think I'm not using correctly the tapestry-ioc since my page call itself
> > my module to get the service implementation instance (as service):
> >
> > UserModule
> >
> > public class UserModule {
> >
> >   public static UserService buildUserService() {
> >     return new UserServiceImpl();
> >   }
> > }
> >
> > UserService
> >
> > public interface UserService {
> >   public User getAuthenticatedUser(String login, String password) throws
> > PapoException;
> > }
> >
> > UserServiceImpl
> >
> > public class UserServiceImpl implements UserService {
> >   public User getAuthenticatedUser(String login, String password) throws
> > PapoException {
> >     [code]
> >     return user;
> >   }
> >
> > }
> >
> > Start
> >
> > [code]
> > private UserService _userService;
> >
> >   String onSuccess() {
> >     [code here]
> >     _userService = UserModule.buildUserService ();
> >     _user = _userService.getAuthenticatedUser(_login.getLogin(),
> > _login.getPassword());
> >
> > ******
> >
> > My page call itself the build method... so my page is hardly linked to the
> > ioc but this is wrong.
> > I thought about something like :
> >
> > [code]
> > @InjectService("UserService")
> > private UserService _userService;
> >
> >   String onSuccess() {
> >     [code here]
> >     _user = _userService.getAuthenticatedUser(_login.getLogin(),
> > _login.getPassword());
> >
> > But it doesn't compile and the notation found in the documentaiton :
> > @Inject
> > @Service("UserService")
> > doesn't exist anymore in the tapestry-core...
> >
> > Any idea?
> >
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to