Re: Practical WO Book Demos

From: Kieran Kelleher (kieran_list..ac.com)
Date: Thu Oct 25 2007 - 18:59:42 EDT

  • Next message: Chuck Hill: "Re: Practical WO Book Demos"

    FYI,

    Recently, a developer on one team I work on had this exact problem in
    Deployment. App ran fine in development from Eclipse, but in
    deployment the app was trying to use java mail Session instead of app
    Session. This workaround was necessary to fix it.

    Regards, Kieran

    On Oct 25, 2007, at 5:34 PM, Chuck Hill wrote:

    >
    > 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 - 19:00:56 EDT