How can I update table's datasource(BeanItemContainer)??

Hi! Everyone!
I have a question about refresh datasource of table setted by BeanItemContainer.
I want to refresh container after click ‘Refresh’ button or add new entity bean.
How can I do?

Refresh :

 #CompanyList.java
Table table = new Table();
table.setContainerDataSource(mySessionBean.getContainer()); //getContainer() returns a BeanItemContainer;

mainLayout.addComponent(table);

Button btnRefresh = new Button("Refresh");
btnRefresh.addListener(new Button.ClickListener(){
    @Override
    public void buttonClick(ClickEvent event) {
        //What code do I insert?
    }
});

mainLayout.addComponent(btnRefresh);

Add new Item :

 #CompanyFormWindow.java
    @Override
    public void buttonClick(ClickEvent event) { // from 'Save' Button
        form.commit();
        company = mySessionBean.save(company);
        if(isNew) {
            BeanItemContainer bic = (BeanItemContainer) (((CompanyList) this.listComponent).table.getContainer);
            bic.addBean(company); // <-- This doesn't work.
            ((CompanyList) this.listComponent).table.addItem(company); // <-- This doesn't work either. I want to refresh.
        }
    }

and Add one question.
Why doesn’t BeanItemContainer.addBeanItem method call fireItemSetChange method?
removeItem and other remove methods call fireItemSetChange method. I wonder that reason.
Please give me your favor. ^^

I have resolved my problem by myself.


beanContainer.addBean(beanItem.getBean());
// this automatically add row to table.
// beanitem is instance of BeanItem class

Because this code of BeanItemContainer.java

        if (!type.isAssignableFrom(bean.getClass())) { //line 271 vaadin v6.4
            return null;
        }

Thanks to BeanItemContainer developer! -_-