[jboss-user] [JBoss Seam] - adding getAttributes() / setAttribute() to BaseSeamTest.Requ

dan.j.allen do-not-reply at jboss.com
Thu Jul 12 19:28:03 EDT 2007


I have requested that there be a way in the SeamTest to get the request-scope attributes (and also set one). http://jira.jboss.org/jira/browse/JBSEAM-1657

Ah, and I can justify why now (car rides are always useful for these things). In the Expressions class (and perhaps JSF in general), you cannot set the value of an arbitrary value binding. The root has to resolve to some bean somewhere. However, you can place things manually into different scopes, which Seam handles when it outjects. So by setting the request scope attribute, you are emulating what would occur from an outjection of some other Seam component.

Let me provide an example:

This is fine:

@Name("user")
  | public class User {
  |     private String name;
  | 
  |    // getters and setters
  | }

...inside test

setValue("#{user.name}", "Mike");

This is not fine (does nothing):

setValue("#{madeupexpression}", "Mike")

However, if your Seam component has a "madeupexpression" property that needs to be injected, then you need a way to make this value available in the test. You are emulating the @Out that perhaps occurred in some other part of the code.

Here is what will work:

@Name("someComponent")
  | public class SomeComponent {
  |     @In
  |     private String madeupexpression;
  | }

...inside test

setAttribute("madeupexpression", "Mike") // proposed
  | Component.getInstance("someComponent");
  | System.out.println("You've got no errors");

Hopefully that makes it clear why we need this. Or, perhaps someone can tell me how I am doing it all wrong. How do you prepare a value expression that would have been outjected by another component?  Assume that the other component is not used in the test.

I do know about setField(), but assume that you are not instantiating the object manually but rather using Component.getInstance("someComponent") to get it. When this call is made, all the dependencies have to be available.

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

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



More information about the jboss-user mailing list