package Ġcom . example . e commerce . product . use case Ċ Ċ import Ġcom . example . e commerce . product . domain .* Ċ import Ġcom . example . e commerce . shared . domain . Price Ċ import Ġcom . example . e commerce . shared . domain . event . Event Publisher Ċ import Ġcom . example . e commerce . shared . domain . product . ProductId Ċ import Ġcom . example . e commerce . shared . domain . product . ProductName Ċ Ċ class ĠCreate Product ( val Ġproduct Repository : ĠProduct Repository , Ġval Ġevent Publisher : ĠEvent Publisher ) Ġ{ ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠĠĠ ĠproductId : ĠProduct Id , ĊĠĠĠĠĠĠĠ Ġproduct SK U : ĠProduct SK U , ĊĠĠĠĠĠĠĠ Ġproduct Category : ĠProduct Category , ĊĠĠĠĠĠĠĠ Ġproduct Name : ĠProduct Name , ĊĠĠĠĠĠĠĠ Ġproduct Description : ĠProduct Description , ĊĠĠĠĠĠĠĠ Ġprice : ĠPrice ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= ĠProduct . create ( productId , Ġproduct SK U , Ġproduct Category , Ġproduct Name , Ġproduct Description , Ġprice ) ĊĠĠĠĠĠĠĠ Ġproduct Repository . save ( product ) ĊĠĠĠĠĠĠĠ Ġevent Publisher ( product . pull Events ()) ĊĠĠĠ Ġ} Ċ }