On 19/09/2007, at 8:15 AM, Lachlan Scott wrote:
In our application, we have a log in component which adds a User
object
to the Session if the supplied credentials are correct.
For testing purposes, we use a 'component menu' component which
displays
a list of available components, and provides action methods to display
them individually.
We can write an action method in the menu to do a login and then
display
the component, like this (pseudo code)
Public WOComponent doLoginAndCallNewPage(){
// do usual login stuff
// return the actual page we want
}
Which is all well and good, but feels clumsy, and hard codes the login
variables. I wondered if we couldn't somehow call the desired page and
address its user variable from the WOD, something like this:
MyWebObjectName : MyDesiredComponentName {
user = <some construct to set a User to this variable>;
}
Sure...
-- CurrentPage.java --
public User fechedUser() {
if ( session().hasUser() ) {
return session().user();
}
else if ( ! hasCredentials() )
return this;
// fetch user from credentials
try {
NSDictionary creds = new NSMutableDictionary();
creds.setObjectForKey( userName(), User.UserNameKey );
creds.setObjectForKey( ..... );
session().setUser( ( User )EOUtilities.objectMatchingValues( ec,
User.ENTITY_NAME, creds ) );
return fetchedUser();
}
catch ( EOUtilities.MoreThanOneException e ) {
logger.error( "Mayday... no unique constraints on database!" );
throw new NSForwardException( "Woops..." ... );
}
catch ( EOObjectNotAvailableException e ) {
setCredentialsValue( false );
return this;
}
}
MyWebObjectName : MyDesiredComponentName {
user = fetchedUser;
}
-- MyDesiredComponentName.java --
public User loggedInUser() {
if ( _user == null )
_user = ( User )valueForBinding( "user" );
return _user;
}
with regards,
--
Lachlan Deck
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [EMAIL PROTECTED]