private void postFullSynchRequest(final RequestID reqID,
            final FavoriteSynchListener listener) {
        if(LOG.isInfo()) {
            LOG.info("FavoriteModule","post FavoriteSynchRequest reqID=" + reqID);
        }
        //all changes will be sent
        clientChanges = false;
        FavoriteSynchData data = new FavoriteSynchData(
                favModel.getInternalArray(), deletedFav);
        //delete favs that will be sent to server are removed 
        //will be added back if the request fails
        deletedFav.clear(); 
        //new favs that are sent to server are marked 
        //will be marked back as STATUS_NEW if failed  
        for(int i=0; i < data.clientNewFavs.length; i++) {
            data.clientNewFavs[i].setStatus(FavoriteInternal.STATUS_NEW_SENDING);
        }  
        
        FavoriteSynchRequest synchRequest = new FavoriteSynchRequest(data,
                new MC2RequestListener(){
                    public void requestDone(Object result, final CoreError error) {
                        final FavoriteSynchData data = (FavoriteSynchData)result;
                        if (error != null) {
                            if(LOG.isError()) {
                                LOG.error("FavoriteModule",
                                        "done FavoriteSynchRequest error: " + error.toString());
                            }
                            
                        } else {
                            if(LOG.isInfo()) {
                                LOG.info("FavoriteModule",
                                        "done FavoriteSynchRequest changes: " + data.hasChanges());
                            }
                        }                        
                        callback.callInvokeCallbackRunnable(new Runnable() {
                            public void run() {
                                synchronizeDone(error, data);
                                if (listener != null) {
                                    if (error == null) {
                                        listener.synchronizeDone(reqID, 
                                                data.hasChanges());
                                    } else {
                                        listener.error(reqID, error);
                                    }
                                    pendingSynch = false;
                                }
                            }
                        });
                    }
                });
        mc2Ifc.pendingMC2Request(synchRequest);
    }