Erro ao setar dados no TableView

Ola Pessoal eu estou tendo uma pequena dificuldade em pegar os Itens de cada Venda pela lista de productList do meu Sistema mas ele retorna um NullPoit Exception

`
public void onActionConfirmSelect() {
Sales s = new Sales();

    if (tbGrade.getSelectionModel().isEmpty()) {
    
Alerta.alerta("Selecione um Artigo.");
        return;
    }

    product = tbGrade.getSelectionModel().getSelectedItem();

    if (product.getStatus() == Status.INATIVO) {
        Alerta.alerta("Artigo inativo.");
        AlertMaker.showTrayMessageERROR("O Artigo " + product.getName(), " esta Bloqueado");
        return;
    }
    System.out.println(product);
    s.setProductItems(product);
    dialogStage.close();
}`

Ação do Botão de confirmação o Item selecionado na Lista de Produtos

e este set ProductItem(product) faz parte da tela Sales ou Vendas
codigo abaixo.
`
public void setProductItems(Product p){
this.productItem= p;
//collectionList = productItem;
Sale sales = new Sale();
sales.addItem(this.productItem);
/// tableProductsItems.setItems(productList.observableListProducts);

    collectionList.add(productItem);
    System.out.println(collectionList);

    tableProductsItems.setItems((ObservableList<Product>) productItem);
    //tableProductsItems.setItems(collectionList);
    System.out.println("[ "+productItem.getProductCode()+" - "+productItem.getDescription() + " - "+ productItem.getPriceSale()+" ]");
    //tfPesquisar.setText(productItem.getDescription());

    //System.out.println(sales.getItens());
}`

se Alguem tiver como me auxiliar aguardo ansiosamente. lembrando que os System.out.print("") ;
retornam com o valor esperado so o TableSalesItem é