[jboss-user] [JBoss Seam] - Interpolated Log String Causes Exception During TestNG Execu

lowecg2004 do-not-reply at jboss.com
Fri Sep 22 07:04:34 EDT 2006


Hi,

I have the following log statement within a SFSB action.
log.debug("Attempting to registister account for user: #{user.id}; account: number '#0'; postcode '#1'; telephone = '#2'", originalRef, postcode, phoneNumber);
When the action is invoked from the main application the log statement works as expected.  However, when I invoke the same action from a TestNG test I get the following exception:
Caused by: java.lang.IllegalArgumentException: can't parse argument number user.id
  | 	at java.text.MessageFormat.makeFormat(MessageFormat.java:1330)
  | 	at java.text.MessageFormat.applyPattern(MessageFormat.java:450)
  | 	at java.text.MessageFormat.<init>(MessageFormat.java:368)
  | 	at org.jboss.seam.core.Interpolator.interpolate(Interpolator.java:62)
  | 	at org.jboss.seam.log.LogImpl.interpolate(LogImpl.java:162)
  | 	at org.jboss.seam.log.LogImpl.info(LogImpl.java:98)
  | 	at com.triggersoft.business.RegisterSubscriptionAction.findSubscription(RegisterSubscriptionAction.java:60)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:121)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:110)
The test is defined as follows:
    new Script() {
  |        RegisterSubscription registerSubscription;
  | 
  |        @Override
  |        protected void applyRequestValues() {
  |          // add request parameters required by the @LoggedIn interceptor.
  |           Contexts.getSessionContext().set("loggedIn", true);
  |           
  |           final UserDao userDao = (UserDao) Component.getInstance("userDao", true);
  |           
  |           assert userDao != null;
  |           
  |           final User user = userDao.findById(44);
  |           
  |           assert user != null;
  |           
  |           Contexts.getSessionContext().set("user", user);
  |        }
  |        
  |        
  |        @Override
  |        protected void updateModelValues() throws Exception
  |        {
  |          // configure the action component
  |          registerSubscription = (RegisterSubscription)
  |            Component.getInstance("registerSubscription", true);
  | 
  |          registerSubscription.setOriginalRef("1234567");
  |          registerSubscription.setPhoneNumber("01234 678900");
  |          registerSubscription.setPostcode("A12 BB1");
  |        }
  |        
  |        @Override
  |        protected void invokeApplication()
  |        {
  |          assert Contexts.getSessionContext().get("user") != null;
  |          
  |          final String outcome = registerSubscription.findSubscription();
  |          
  |          assert "registerSubscriptionComplete".equals(outcome);
  |          
  |          final Account confirmAccount =
  |            (Account) Component.getInstance("confirmAccount", true);
  |          
  |          assert confirmAccount != null;
  |        }
  |      }.run();

The action also has the user component injected which I have verified is non null when at the log line during a debug session.

What am I doing wrong?

Cheers,

Chris.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3973526#3973526

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3973526



More information about the jboss-user mailing list