Actually, you can just assign it. I'm doing it right now.
In my application module i have:

public void contributeApplicationStateManager(MappedConfiguration<Class, ApplicationStateContribution> configuration) { ApplicationStateCreator<User> creator = new ApplicationStateCreator<User>() {
           public User create() {
               return null;
           }
       };

configuration.add(User.class, new ApplicationStateContribution("session", creator));
   }

This makes my application work the way i described. To instantiate the ASO i just assign a new object to it.

Kristian Marinkovic wrote:
i see... found the place...

but how do you create an ASO then...? you can't just assign it
mabe you need something that is more like an object in the environment. The value attribute of the @Environmental annotation can be set to false... so if the object is not present you will get null....






Hugo Palma <[EMAIL PROTECTED]> 21.12.2007 14:40
Bitte antworten an
"Tapestry development" <[email protected]>


An
Tapestry development <[email protected]>
Kopie

Thema
Re: [jira] Created: (TAPESTRY-1991) It should be easy to initialize an ASO to null






mmmm, i think it is possible.
In ApplicationStateManagerImpl newAdapter method you'd have to change it's implementation so that the ApplicationStateCreator implementation provided would work like now or if would always return null. Maybe i'm over simplifying things, but it makes sense to me...

Kristian Marinkovic wrote:
hi hugo,

i think what you ask for is not possible because Tapestry 5 generates proxies to access the ASOs. If you set it to null no proxy will be available to check whether there is a new instance in the session. You have the same problem when you use Hibernate with lazy fields/lists. you always
see the proxies.

i'm not sure but all i can think of to implement your feature request/improvemnt would be to move the ASO logic into the pageAttached events.... but i think this would require some changes...
g
kris






Hugo Palma <[EMAIL PROTECTED]> 21.12.2007 14:11
Bitte antworten an
"Tapestry development" <[email protected]>


An
Tapestry development <[email protected]>
Kopie

Thema
Re: [jira] Created: (TAPESTRY-1991) It should be easy to initialize an
ASO
to null






I know the workarounds, i just don't see the point in any of them.
This should be straight forward, i shouldn't have to use any workaround.

What's the downside of adding this behaviour to the ASO logic ?


Davor Hrg wrote:

 a boolean value keeping score if the ASO was actually created is
needed to avoid creating expensive objects on sites with hundreds of
requests per second. Creating session data for users too early was
a killer for many apps in all web languages/scripts/frameworks.

instead forcing aso to be null, you can depend on properties inside it

you can chack if aso.user_data!=null

or have a boolean property for /logged in / not


Davor Hrg

On Dec 21, 2007 11:12 AM, Hugo Palma <[EMAIL PROTECTED]> wrote:


Yes, the default semantics is that it will only create the ASO
instance
once you try to access it.
Still, it seems to me that many times this semantics doesn't really
make

sense, in the cases where the ASO being null has a meaning. The
simplest

case being for example when you want to keep as an ASO the logged
user.
I know the docs say that you can keep a boolean value keeping score if
the ASO was actually created or not, but to me this seems to go
against
everything T5 stands for. This kind of thing really should be easy.


Davor Hrg wrote:


I haven't checked it in practice, I belived what docs say:


http://tapestry.formos.com/nightly/tapestry5/tapestry-core/guide/appstate.html

I think the object will not be created if you do not try to access
the
variable.

Davor Hrg

On Dec 20, 2007 4:36 PM, Hugo Palma (JIRA) <[email protected]>
wrote:

It should be easy to initialize an ASO to null
----------------------------------------------

                 Key: TAPESTRY-1991
URL:
https://issues.apache.org/jira/browse/TAPESTRY-1991

             Project: Tapestry
          Issue Type: Improvement
          Components: Framework
    Affects Versions: 5.0.6
            Reporter: Hugo Palma
            Priority: Minor


By default an ASO is never null. It's automatically created using
the
ASO class default constructor.

It's many times needed to have the null value in an ASO, for example

if i want to keep the logged in user in an ASO.

Right now we can do this by contributing a new
ApplicationStateCreator to the ApplicationStateManager but it seems to
me
that should be as easy as providing a parameter to the @ApplicationState

indicating that you don't want it to be automatically initialized.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



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





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





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







Reply via email to