I'm trying to get AJAX working correctly with SESAT, but I've encountered a 
problem using commands=&waitFor=<command name>


First, here's what I've done so far:

views.xml:
    <tab id="ajaxtest" key="ajaxtest" mode="ajaxtest">
        <layout origin="defaultAjaxSearch" main="ajaxtest"/>
    </tab>

modes.xml:
    <mode id="ajaxtest" inherit="default-mode">
        <yahoo-idp-command id="defaultAjaxSearch" results-to-return="10" 
inherit="default-web-command" asynchronous="true"/>
        <whitepages-command id="whiteCounter" 
inherit="default-whitepageNavigator"/>
    </mode>

ajaxtest.vm:
    defaultAjaxSearch, Hits: 
$datamodel.getSearch("defaultAjaxSearch").results.hitCount<br />
    white, Hits: $datamodel.getSearch("defaultSearch").results.hitCount<br />


Now, /search/?c=ajaxtest&q=sesat reads:

defaultAjaxSearch, Hits: 
$datamodel.getSearch("defaultAjaxSearch").results.hitCount
white, Hits: 0

.. which is as expected, since defaultAjaxSearch is marked as asynchronous.


But (right after) when I try to fetch the defaultAjaxSearch result 
/search/?c=ajaxtest&q=sesat&commands=&waitFor=defaultAjaxSearch reads:
defaultAjaxSearch, Hits: 
$datamodel.getSearch("defaultAjaxSearch").results.hitCount
white, Hits: $datamodel.getSearch("whiteCounter").results.hitCount

Should this not use the previous defaultAjaxSearch command as stated in the 
(afaik not yet released) AJAX tutorial:

> commands=&waitFor=defaultSearch disables all commands from running but asks
> to wait for the command to finish. This presumes that a previous request
> started the command. This demonstrates how commands are stored in the
> datamodel between requests and how asynchronous commands can be initiated
> by the original request, but not used in that request's output, and their
> results used via a second request, eg an ajax call, later on.

Am I missing something? Both requests use the same JSESSIONID.


I see this in the log file for the "/search/?c=ajaxtest&q=sesat" request:

ERROR 12:47:29,380 [localhost:8080/ pool-3-thread-4 [YahooIDPWorld]] 
(a7872530-acfe-413d-8944-6503acc3350b) AbstractSearchCommand: RuntimeException 
occurred
java.lang.reflect.UndeclaredThrowableException
        at $Proxy7.setSearch(Unknown Source)
        at 
no.sesat.search.result.handler.DataModelResultHandler.handleResult(DataModelResultHandler.java:111)
        at 
no.sesat.search.mode.command.AbstractSearchCommand.performResultHandling(AbstractSearchCommand.java:564)
        at 
no.sesat.search.mode.command.AbstractSearchCommand.call(AbstractSearchCommand.java:250)
        at 
no.sesat.search.mode.command.AbstractSearchCommand.call(AbstractSearchCommand.java:98)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:637)
Caused by: no.sesat.search.datamodel.access.DataModelAccessException: Failure 
to honour the Access control annotations on setSearch against VIEW_CONSTRUCTION
        at 
no.sesat.search.datamodel.BeanDataObjectInvocationHandler.assureAccessAllowed(BeanDataObjectInvocationHandler.java:394)
        at 
no.sesat.search.datamodel.BeanDataNodeInvocationHandler.invoke(BeanDataNodeInvocationHandler.java:132)
        ... 10 more

Is this related? (And should I file a bug report?)


-- 
Magne
_______________________________________________
Kernel-development mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-development

Reply via email to