Yeah, I know.  But I'm not messing with any versioning settings (this is
just out-of-the-box ajax components and the like), so really there
shouldn't be any of these issues, correct?  Here's mayTrackChangesFor()
method, I've added a comment regarding my thoughts as to what is causing
this:

    private final boolean mayTrackChangesFor(final Component component,
MarkupContainer parent)
    {
        // Auto components do not participate in versioning since they are
        // added during the rendering phase (which is normally illegal).
        if (component.isAuto() || (parent == null &&
!component.isVersioned())
                || (parent != null && !parent.isVersioned()))
        {
            return false;
        }
        else
        {
            // the component is versioned... are we tracking changes at all?
            if (getFlag(FLAG_TRACK_CHANGES))   <-- this returns true
            {
                // we are tracking changes... do we need to start new
version?
                if (!getFlag(FLAG_NEW_VERSION))  <-- this may return false?
                {
                    // if we have no version manager
                    if (versionManager == null)
                    {
                        // then install a new version manager
                        versionManager = newVersionManager();
                    }

                    // start a new version
                   
versionManager.beginVersion(getRequest().mergeVersion());
                    setFlag(FLAG_NEW_VERSION, true);
                }

                // this returns true, even though versionManager is not
set because of false check above
                // return true as we are ready for versioning
                return true;
            }

            // we are not tracking changes or the component not versioned
            return false;
        }
    }

Should I specifically be setting versioning/non-versioning for
components to avoid this error?

Aaron

Johan Compagner wrote:
> But if it is null then you could have a problem that things should be
> versioned but arent..
>
> So adding null checks is not the fix.
>
> johan
>
>
> On 3/2/07, * Aaron HIniker* <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
>     That's why I was pointing at mayTrackChangesFor()..  I looked at
>     the method and I can't see a loophole, but there must be one to
>     generate an NPE, correct?
>
>     When I implemented the not-null check, I noticed exceptions still
>     being thrown from 2 other methods (if you search Page.java for
>     versionManager, you can see where there is the assumption that
>     mayTrackChangesFor() is checked for 'true', yet versionManager is
>     never initialized in other methods as well.  So after adding the
>     null check to each of these methods, the application is working
>     fine.  Thing is, I've only seen this exception when dealing with
>     ajax (default not versioned, right?). 
>
>     I will try and run a debugger through mayTrackChangesFor() with my
>     current app, and see the logic flow and why versionManager is
>     ending up null.
>
>     Aaron
>
>     Johan Compagner wrote:
>>     That is because the mayTrackChangesFor() method should only
>>     return true
>>     when it makes a version manager. Why is that not the case?
>>     If that method returns true the version manager can't be null
>>     because the version info must be tracked.
>>
>>     johan
>>
>>
>>     On 3/1/07, *Aaron Hiniker* <[EMAIL PROTECTED]
>>     <mailto:[EMAIL PROTECTED]>> wrote:
>>
>>         I pulled the latest from trunk.  And I am getting this NPE:
>>
>>         16:30:14,543 ERROR [STDERR] java.lang.NullPointerException
>>         16:30:14,544 ERROR [STDERR]     at
>>         wicket.Page.componentStateChanging(Page.java:327)
>>         16:30:14,545 ERROR [STDERR]     at
>>         wicket.Component.addStateChange(Component.java:2553)
>>         16:30:14,545 ERROR [STDERR]     at
>>         wicket.Component.setModel(Component.java:2191)
>>         16:30:14,545 ERROR [STDERR]     at
>>         wicket.MarkupContainer.setModel(MarkupContainer.java :596)
>>         16:30:14,546 ERROR [STDERR]     at
>>         
>> com.edicorp.erp.web.components.search.ProductSearchPanel.query(ProductSearchPanel.java:144)
>>         16:30:14,546 ERROR [STDERR]     at
>>         com.edicorp.erp.web.components.search.ProductSearchPanel.onUpdate
>>         (ProductSearchPanel.java:109)
>>         16:30:14,546 ERROR [STDERR]     at
>>         
>> com.edicorp.erp.web.components.search.FilterPanel.fireOnChange(FilterPanel.java:74)
>>         16:30:14,547 ERROR [STDERR]     at
>>         
>> com.edicorp.erp.web.components.search.query.QueryPanel$QueryForm.onSubmit
>>         (QueryPanel.java:197)
>>         16:30:14,547 ERROR [STDERR]     at
>>         wicket.markup.html.form.Form.delegateSubmit(Form.java:680)
>>         16:30:14,547 ERROR [STDERR]     at
>>         wicket.markup.html.form.Form.onFormSubmitted(Form.java:396)
>>         16:30:14,547 ERROR [STDERR]     at
>>         sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>
>>
>>         I remember I was getting this NPE before, and I patched the
>>         source to
>>         include this null check in Page.java :
>>
>>                 final void componentStateChanging(final Component
>>         component,
>>         Change change)
>>                 {
>>                         checkHierarchyChange(component);
>>
>>                         dirty();
>>                         if (mayTrackChangesFor(component, null))
>>                         {
>>                                 if ( versionManager != null )
>>
>>         versionManager.componentStateChanging(change);
>>                         }
>>                 }
>>
>>         It seems that everywhere else in Page.java there is a null
>>         check for
>>         versionManager, except in this method.  Not sure, but perhaps the
>>         problem lies in the #mayTrackChangesFor() method, but in any
>>         case if I
>>         add this null check my code runs fine.
>>
>>         Aaron
>>
>>
>>         
>> -------------------------------------------------------------------------
>>
>>         Take Surveys. Earn Cash. Influence the Future of IT
>>         Join SourceForge.net's Techsay panel and you'll get the
>>         chance to share your
>>         opinions on IT & business topics through brief surveys-and
>>         earn cash
>>         
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>         
>> <http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV>
>>         _______________________________________________
>>         Wicket-user mailing list
>>         Wicket-user@lists.sourceforge.net
>>         <mailto:Wicket-user@lists.sourceforge.net>
>>         https://lists.sourceforge.net/lists/listinfo/wicket-user
>>         <https://lists.sourceforge.net/lists/listinfo/wicket-user>
>>
>>
>>     ------------------------------------------------------------------------
>>
>>     -------------------------------------------------------------------------
>>     Take Surveys. Earn Cash. Influence the Future of IT
>>     Join SourceForge.net's Techsay panel and you'll get the chance to share 
>> your
>>
>>     opinions on IT & business topics through brief surveys-and earn cash
>>
>>     
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV 
>> <http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV>
>>     ------------------------------------------------------------------------
>>
>>     _______________________________________________
>>     Wicket-user mailing list
>>     Wicket-user@lists.sourceforge.net
>>      <mailto:Wicket-user@lists.sourceforge.net>
>>     https://lists.sourceforge.net/lists/listinfo/wicket-user
>>       
>
>
>     -------------------------------------------------------------------------
>     Take Surveys. Earn Cash. Influence the Future of IT
>     Join SourceForge.net's Techsay panel and you'll get the chance to
>     share your
>     opinions on IT & business topics through brief surveys-and earn cash
>     http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>     
> <http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV>
>     _______________________________________________
>     Wicket-user mailing list
>     Wicket-user@lists.sourceforge.net
>     <mailto:Wicket-user@lists.sourceforge.net>
>     https://lists.sourceforge.net/lists/listinfo/wicket-user
>     <https://lists.sourceforge.net/lists/listinfo/wicket-user>
>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> ------------------------------------------------------------------------
>
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>   

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to