Im using the following method in my Data class.
public HierarchicalSQLContainer GetQueryContainerTest(String query)
{
TableQuery tableQuery = new TableQuery(query, connectionPool, new OracleGenerator());
HierarchicalSQLContainer Container = null;
try {
Container = new HierarchicalSQLContainer(tableQuery);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Container;
}
im getting the following exception
[code]
com.vaadin.event.ListenerMethod$MethodException: Invocation of method buttonClick in com.example.cwebtesting.CwebtestingApplication failed.
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:530)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
at com.vaadin.ui.Button.fireClick(Button.java:567)
at com.vaadin.ui.Button.changeVariables(Button.java:223)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1460)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1404)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1329)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:761)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:318)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.StackOverflowError
at java.util.regex.Pattern.inRange(Unknown Source)
at java.util.regex.Pattern.access$200(Unknown Source)
at java.util.regex.Pattern$2.isSatisfiedBy(Unknown Source)
at java.util.regex.Pattern$6.isSatisfiedBy(Unknown Source)
at java.util.regex.Pattern$6.isSatisfiedBy(Unknown Source)
at java.util.regex.Pattern$CharProperty.match(Unknown Source)
at java.util.regex.Pattern$GroupHead.match(Unknown Source)
at java.util.regex.Pattern$Branch.match(Unknown Source)
at java.util.regex.Pattern$Branch.match(Unknown Source)
at java.util.regex.Pattern$Branch.match(Unknown Source)
at java.util.regex.Pattern$BranchConn.match(Unknown Source)
at java.util.regex.Pattern$GroupTail.match(Unknown Source)
at java.util.regex.Pattern$Curly.match0(Unknown Source)
at java.util.regex.Pattern$Curly.match(Unknown Source)
at java.util.regex.Pattern$GroupHead.match(Unknown Source)
at java.util.regex.Pattern$Branch.match(Unknown Source)
at java.util.regex.Pattern$Branch.match(Unknown Source)
at java.util.regex.Pattern$BmpCharProperty.match(Unknown Source)
at java.util.regex.Pattern$Start.match(Unknown Source)
at java.util.regex.Matcher.search(Unknown Source)
at java.util.regex.Matcher.find(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at com.vaadin.data.util.sqlcontainer.query.generator.OracleGenerator.generateSelectQuery(OracleGenerator.java:79)
at com.vaadin.data.util.sqlcontainer.query.TableQuery.getCount(TableQuery.java:128)
at com.vaadin.data.util.sqlcontainer.SQLContainer.updateCount(SQLContainer.java:1038)
at com.vaadin.data.util.sqlcontainer.SQLContainer.getItemIds(SQLContainer.java:313)
at cWeb.Core.HierarchicalSQLContainer.rootItemIds(HierarchicalSQLContainer.java:38)
at com.vaadin.ui.TreeTable$HierarchicalStrategy.getPreOrder(TreeTable.java:256)
at com.vaadin.ui.TreeTable$HierarchicalStrategy.size(TreeTable.java:185)
at com.vaadin.ui.TreeTable.size(TreeTable.java:551)
at com.vaadin.ui.Table.setCurrentPageFirstItemIndex(Table.java:1314)
at com.vaadin.ui.Table.containerItemSetChange(Table.java:3956)
at com.vaadin.ui.TreeTable.containerItemSetChange(TreeTable.java:584)
at com.vaadin.data.util.sqlcontainer.SQLContainer.fireContentsChange(SQLContainer.java:1460)
at com.vaadin.data.util.sqlcontainer.SQLContainer.refresh(SQLContainer.java:792)
at com.vaadin.data.util.sqlcontainer.SQLContainer.removeContainerFilters(SQLContainer.java:562)
at cWeb.Core.HierarchicalSQLContainer.rootItemIds(HierarchicalSQLContainer.java:39)
at com.vaadin.ui.TreeTable$HierarchicalStrategy.getPreOrder(TreeTable.java:256)
at com.vaadin.ui.TreeTable$HierarchicalStrategy.size(TreeTable.java:185)
at com.vaadin.ui.TreeTable.size(TreeTable.java:551)
[/code
Looks to me like some issue with the oracle generator i am using the Hierarchical container posted by another user on the forum to try and create a TreeTable from an oracle database with Parent / Child relationships,
package cWeb.Core;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import com.vaadin.data.Container;
import com.vaadin.data.util.filter.Compare;
import com.vaadin.data.util.sqlcontainer.SQLContainer;
import com.vaadin.data.util.sqlcontainer.query.QueryDelegate;
public class HierarchicalSQLContainer extends SQLContainer implements Container.Hierarchical {
/**
*
*/
private static final long serialVersionUID = 1L;
private SQLContainer childrenContainer;
public HierarchicalSQLContainer(QueryDelegate delegate) throws SQLException {
super(delegate);
childrenContainer = new SQLContainer(getQueryDelegate());
}
public Collection<?> getChildren(Object itemId) {
//Compare.Equal myFilter = new Compare.Equal("parentId", (Integer) getItem(itemId).getItemProperty("id").getValue());
//childrenContainer.addContainerFilter(myFilter);
ArrayList<Object> myList = new ArrayList<Object>();
myList.addAll(childrenContainer.getItemIds());
childrenContainer.removeContainerFilters("parentId");
return myList;
}
public Object getParent(Object itemId) {
return getContainerProperty(itemId, "parentId");
}
public Collection<?> rootItemIds() {
ArrayList<Object> myList = new ArrayList<Object>();
myList.addAll(getItemIds());
removeContainerFilters("parentId");
return myList;
}
public boolean setParent(Object itemId, Object newParentId)
throws UnsupportedOperationException {
return true;
}
public boolean areChildrenAllowed(Object itemId) {
return true;
}
public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed)
throws UnsupportedOperationException {
return true;
}
public boolean isRoot(Object itemId) {
return true;
}
public boolean hasChildren(Object itemId) {
return true;
}
}
Im calling the GetQueryContainer in my TreeTable class am i doing something wrong?.