Hi All,
I am trying to load huge data to a table using lazyquerycontainer. Am getting exception since loaditems() method in SearchQuery class is called recursively.When i checked for container size it is return correct value.
below is the exception
com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method click in com.vaadin.shared.ui.button.ButtonServerRpc
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:170)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
at com.vaadin.server.AbstractCommunicationManager.handleBurst(AbstractCommunicationManager.java:1680)
at com.vaadin.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1566)
at com.vaadin.server.AbstractCommunicationManager.handleUidlRequest(AbstractCommunicationManager.java:582)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:315)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
Below is my Code snippet
final LazyQueryContainer container = new LazyQueryContainer(searchqueryfactory,
“_id”, 10,false);
//SearchQueryfactory
public Query constructQuery(QueryDefinition arg0) {
// TODO Auto-generated method stub
Object[] arg=arg0.getSortPropertyIds();
boolean[] arg1= arg0.getSortPropertyAscendingStates();
String sortField = null;
boolean sortOrder = false;
if (arg0 != null && arg.length > 0) {
sortField = arg[0]
.toString();
}
if (arg1 != null && arg1.length > 0) {
sortOrder = arg1[0]
;
}
if (sortField == null) {
sortField = this.search.getSortKey();
sortOrder = this.search.isSortOrder();
}
return new SearchQuery(this,arg0, sortField, sortOrder);
}
}
public class SearchQuery implements Query{
public List loadItems(int startIndex, int count)
{
try{
List<Map<String,Object>> result=factory.getResult(startIndex, count, this.sortField, this.sortOrder);
return this.convertResultToItem(result);
}catch (Exception e) {
e.printStackTrace();
logUtil.error("Exception : " + e.getMessage());
return null;
}
}
private List convertResultToItem(List<Map<String,Object>> result){
List<Item> items=new ArrayList<Item>();
int count=0;
Collection<Object> propIds=definition.getPropertyIds();
if(result!=null){
for(Map<String,Object> map:result){
PropertysetItem item=new PropertysetItem();
for(Object id:propIds){
item.addItemProperty(id, new ObjectProperty(
map.get(id.toString()),
(Class)definition.getPropertyType(id),
(Boolean)definition.isPropertyReadOnly(id)
));
}
items.add(item);
count=count+1;
}
}
return items;
}
}[b]
[/b][b]
[/b][u]
[/u]