Re: Practical WO Book Demos

From: Chuck Hill (chil..lobal-village.net)
Date: Thu Oct 25 2007 - 17:34:50 EDT

  • Next message: Kieran Kelleher: "Re: Practical WO Book Demos"

    On Oct 25, 2007, at 11:13 AM, Fred Shurtleff wrote:

    > This did the trick - the app now runs ok. Thank you very much.
    >
    > But it does raise the question WHY this code is needed when there
    > is only one Session file in all the projects I have imported into
    > Eclipse. Seems very odd to me.

    It is probably a problem with the Eclipse launcher configuration for
    this project. I am not sure why it would affect just this one.

    Chuck

    >
    > Fred (see further below)
    >
    > Kieran Kelleher wrote:
    >> Just copy/paste this code below into your Application class and
    >> assuming your Session class is in the same package as your
    >> Application class, this will solve the WebObjects bad
    >> implementation for identifying the Session class
    >>
    >> private Class _ourSessionClass;
    >>
    >> /* (non-Javadoc)
    >> *..ee com.webobjects.appserver.WOApplication#_sessionClass()
    >> * WebObjects searches the classpath and uses the first class
    >> it finds with
    >> * the name Session ... crazy huh? This ensures that Session
    >> from the same package as the
    >> * Application class is used
    >> */
    >> ..verride
    >> protected Class _sessionClass()
    >> {
    >> if (_ourSessionClass == null) {
    >> String ourSessionClassName = null;
    >> try {
    >> ourSessionClassName = getClass().getPackage
    >> ().getName() + ".Session";
    >> System.out.println("Using " + ourSessionClassName
    >> + " as the application's Session class.");
    >> _ourSessionClass = Class.forName
    >> ( ourSessionClassName );
    >> } catch ( Exception e ) {
    >> System.err.println( "What have you done with your
    >> " + ourSessionClassName + " class?!\n" + e.getStackTrace() );
    >> }
    >> } //~ if (_ourSessionClass == null)
    >> return _ourSessionClass;
    >> }
    >>
    >>
    >> HTH, Kieran
    >>
    >> On Oct 24, 2007, at 12:51 PM, Chuck Hill wrote:
    >>
    >>> It sounds like you may have a classpath issue and that the
    >>> Session class getting loaded is something like java.mail.Session
    >>> instead of the Session class in this project.
    >>>
    >>> Try adding this to the constructor in Main:
    >>>
    >>> NSLog.out.appendln("Session class is " + session().getClass
    >>> ().getName());
    >>>
    >>> Chuck
    >>>
    > This statement did not report nothing (that is no fixed text nor
    > the Session name). But I don't know why - perhaps I positioned in
    > the wrong place (I put it in public Main - right after the super
    > (context) statement.
    >>>
    >>> On Oct 3, 2007, at 9:02 AM, Fred Shurtleff wrote:
    >>>
    >>>> Thanks for your suggestions, but unfortunately, deleting unused
    >>>> projects did NOT have any effect. I deleted all projects EXCEPT
    >>>> PracticalUtilities, EOJDBCPrototypes, and PWOExampleApp, which
    >>>> are all companion apps specified in the PWO Book setup
    >>>> instructions. And furthermore, I checked each of these projects
    >>>> and there is no Session.java file - so this leaves only 1
    >>>> Session file in all of Eclipse - that being in the Chap4App
    >>>> project.
    >>>>
    >>>> Regards the bindings tip, I do NOT see a proper validation
    >>>> performed in this case - Main.wod. I actually changed the
    >>>> binding > condition = session.isUserAuthenticated; to an
    >>>> erroneous method (isUserAuthenticatedX) and changed the title in
    >>>> the HTML file to trigger a re-validation, but this validated OK
    >>>> - there was no red X indicating a problem.
    >>>>
    >>>> And as previously mentioned, I changed the session syntax to
    >>>> Session(with a capital S), but this triggered an error re no
    >>>> 'Session' class found. So I interpret this to mean that it is
    >>>> finding the session class, but for some reason cannot find any
    >>>> of the class methods (ie. generates an NSKeyValueCoding
    >>>> exception > UnknownKeyException > lookup for unknown key:
    >>>> isUserAuthenticated).
    >>>>
    >>>> This is very puzzling in that something about this particular
    >>>> project fails, whereas the other demos run/build Ok.
    >>>>
    >>>> Fred
    >>>>
    >>>> D Tim Cummings wrote:
    >>>>> On 29/09/2007, at 7:59 AM, Fred Shurtleff wrote:
    >>>>>
    >>>>>> Actually each chapter is a separate project which gets
    >>>>>> imported into Eclipse, and, of course, contains only 1 Session
    >>>>>> class. Furthermore I have not made ANY change to the project
    >>>>>> files ie. Main or Session.java, nor the Main.wod files. I
    >>>>>> simple want to demo their technique of managing security using
    >>>>>> a few methods in the session class to control access to
    >>>>>> various public/secure areas in the application.
    >>>>>>
    >>>>> I find sometimes if I have several projects open in eclipse, WO
    >>>>> Component Editor validates against the wrong Session or
    >>>>> Application class. Closing the unused projects fixes the problem.
    >>>>>
    >>>>>> WOComponentEditor does not complain about the bindings - that
    >>>>>> is there are no red X's or other symbols indicating a problem.
    >>>>>> Matter of fact, I did change the binding to
    >>>>>> 'Session.isUserAuthenticated'(with a capital S since WOLips
    >>>>>> does create a default Session.java file), and when I ran the
    >>>>>> app it did complain that there was no 'Session' class. So I
    >>>>>> interpret this to mean the session class is referenced Ok, but
    >>>>>> none of the session class methods or variables are accessible.
    >>>>>> But I can't see why!
    >>>>>>
    >>>>>
    >>>>> You need to make a small change, eg add a space to the html, to
    >>>>> the WOComponent and save it to trigger WO Component Editor to
    >>>>> revalidate the bindings.
    >>>>>
    >>>>> Session.isUserAuthenticated will be looking first for a method
    >>>>> in your component called Session() or getSession() which won't
    >>>>> work
    >>>>>
    >>>>> session.isUserAuthenticated will be looking first for a method
    >>>>> session() which exists in WOComponent which your component
    >>>>> extends. WOComponentEditor must do some funky stuff to
    >>>>> determine that session() returns an object of type Session
    >>>>> rather than type WOSession to complete the validation.
    >>>>>
    >>>>> Tim
    >>>>>
    >>>>>> I am totally stumped on this one.
    >>>>>>
    >>>>>> Jean Pierre Malrieu wrote:
    >>>>>>> My guess is that there are several "Session" classes
    >>>>>>> corresponding to different chapters in the book, and that
    >>>>>>> somehow, you are using the wrong "Session" (from a previous
    >>>>>>> chapter?) which does not have the required variables and
    >>>>>>> functions.
    >>>>>>> What does WOComponentEditor say about the bindings? Does it
    >>>>>>> complain?
    >>>>>>>
    >>>>>>> jpm
    >>>>>>>
    >>>>>>>
    >>>>>>>
    >>>>>>> Le 28 sept. 07 à 19:56, Fred Shurtleff a écrit :
    >>>>>>>
    >>>>>>>> Yes - this is the conditional causing the exception. So I
    >>>>>>>> changed the condition = true (to get around this problem),
    >>>>>>>> and then another 'unknown key' exception is triggered:
    >>>>>>>> authenticatedUser is unknown(but is in fact a public method
    >>>>>>>> in session.java).
    >>>>>>>>
    >>>>>>>> So for some reason none of the bindings on Main.wod using
    >>>>>>>> session PUBLIC methods/vars are recognizable eg. they
    >>>>>>>> trigger exception errors. Can anyone see what might be the
    >>>>>>>> problem here?
    >>>>>>>>
    >>>>>>>> Jean Pierre Malrieu wrote:
    >>>>>>>>> Without taking a look at the book, or the code, so just a
    >>>>>>>>> guess: Did you try changing the wod to
    >>>>>>>>>
    >>>>>>>>> Conditional: WOConditional {
    >>>>>>>>> condition = session.isUserAuthenticated;
    >>>>>>>>> }
    >>>>>>>>>
    >>>>>>>>> ?
    >>>>>>>>>
    >>>>>>>>>
    >>>>>>>>> jpm
    >>>>>>>>>
    >>>>>>>>> Le 27 sept. 07 à 21:49, Fred Shurtleff a écrit :
    >>>>>>>>>
    >>>>>>>>>> Has anyone been able to run the Chapter4App demo from the
    >>>>>>>>>> Practical WebObjects Book by Hill & Mallais?
    >>>>>>>>>>
    >>>>>>>>>> I am unable to get this project to run - it raises an
    >>>>>>>>>> Exception > An instance variable or method of the name
    >>>>>>>>>> 'isUserAuthenticated' is not found(this is a WOConditional
    >>>>>>>>>> binding on the Main page). But 'isUserAuthenticated' is,
    >>>>>>>>>> in fact, a method in Session.java. So I am now at a dead end.
    >>>>>>>>>>
    >>>>>>>>>> Thanks for any ideas or suggestions.
    >>>>>>>>>>
    >>>>>>>>>>
    >>>>>>>>>
    >>>>>>>>>
    >>>>>>>>>
    >>>>>>>>
    >>>>>>>>
    >>>>>>>>
    >>>>>>>
    >>>>>>>
    >>>>>>>
    >>>>>>
    >>>>>>
    >>>>>>
    >>>>>
    >>>>>
    >>>>>
    >>>>
    >>>>
    >>>>
    >>>
    >>> --
    >>>
    >>> Practical WebObjects - for developers who want to increase their
    >>> overall knowledge of WebObjects or who are trying to solve
    >>> specific problems.
    >>> http://www.global-village.net/products/practical_webobjects
    >>>
    >>>
    >>>
    >>>
    >>>
    >>
    >>
    >>
    >
    >
    >

    -- 
    

    Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems. http://www.global-village.net/products/practical_webobjects



    This archive was generated by hypermail 2.0.0 : Thu Oct 25 2007 - 17:37:56 EDT