Hi, just missed you in IRC.
setUrl method is only called internally to set the product link based on what you set in the component options. Once you set the product page, it'll use that to set the URL automatically.
If you want to reproduce this somewhere else, you need to pass along an instance of a
Controller class. In a component, that would be
$this->controller. You can find an example of it being used in the
components/Products.php file near the bottom.
Is that what you were looking for?