public synchronized void publishLastSale(String product, Price p, int v) throws Exception {
        String thisClass = "publishers.LastSalePublisher#publishLastSale.";
        if (ExceptionHandler.checkString(product, thisClass) && ExceptionHandler.checkIntNegative(v, thisClass)
                && ExceptionHandler.checkIntZero(v, thisClass)) {
            p = check(p);
            if (myPublisher.getSubscribers() != null) {
                HashMap<String, HashMap> subscribers = myPublisher.getSubscribers();
                if (subscribers.get(product) != null) {
                    HashMap<String, User> users = (HashMap<String, User>) subscribers.get(product);
                    if (!users.isEmpty()) {
                        Iterator it = users.entrySet().iterator();
                        while (it.hasNext()) {
                            Map.Entry userEntry = (Map.Entry) it.next();
                            if (userEntry.getValue() != null) {
                                User u = (User) userEntry.getValue();
                                u.acceptLastSale(product, p, v);
                            }
                        }
                        TickerPublisher.getInstance().publishTicker(product, p);
                    }
                }
            }
        }
    }