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