im using LCDS 2.6, I have auto-sync-enabled=false and im using 
manualsync. I've read, deleteItem() should be handled automaticaly 
and seems deleteItem is working fine. But when i use createItem(), 
seems that data are routed to clients but item isn't added to fill. 
I have no clue where is problem.. 

Recieved message on the client:
(mx.data.messages.DataMessage)
  messageId = '9C930053-171A-20A2-5176-F0C710C33445'
  operation = update collection
  destination = wallVO
  identity = (null)
  body = [
    mx.data::UpdateCollectionRange {
      identities = ["E2036A8A-8132-1662-7F09-F0B4D538B3FE"]
      position = 2
      size = 0
      updateType = 0
    }
  ]
  headers = {
    DSSubtopic = mx.collections::ArrayCollection {
      filterFunction = null
      length = 1
      list = mx.collections::ArrayList {
        length = 1
        source = ["wall.edit.30886704"]
        uid = "E8852CB3-3208-26A5-5812-F0C7144D0302"
      }
      sort = null
      source = #0
    }
  }


on the client i have:

 public function getWallMessages
(collection:ArrayCollection,vo:UserProfileVO):void{
  service.manualSync.consumerSubscriptions.removeAll();
  var subtopic:String = "wall.edit."+vo.id.toString();
  service.manualSync.consumerAddSubscription(subtopic);
  service.manualSync.consumerSubscribe();               
  var token:AsyncToken = service.fill(collection, "user", vo);
  token.addResponder(this.responder);
}

public function createWallMessage(vo:WallVO):void{      
  service.manualSync.producerSubtopics.removeAll();
  var subtopic:String = "wall.edit."+vo.profile.id.toString();
  service.manualSync.producerSubtopics.addItem(subtopic);
                        
  var token:AsyncToken = service.createItem(vo);
  token.addResponder(this.responder);                   
  service.commit();
}       

public function deleteWallMessage(vo:WallVO):void
{                       
  service.manualSync.producerSubtopics.removeAll();
  var subtopic:String = "wall.edit."+vo.profile.id.toString();
  service.manualSync.producerSubtopics.addItem(subtopic);
                        
  var token:AsyncToken = service.deleteItem(vo);
  token.addResponder(this.responder);                   
  service.commit();
}                      

assembler's code;
public class WallAssembler extends AbstractAssembler {

 ...

  public Collection fill(List fillParameters)
  {
    String queryName = (String) fillParameters.get(0);
    if (queryName.equals("user")){
      int userID = ((UserProfileVO) fillParameters.get(1)).getId();
      return dao.getProfileWall(userID);
    }
    return super.fill(fillParameters); // throws a nice error
  }

  public void createItem(Object newItem)
  {
    DataServiceTransaction dtx = 
DataServiceTransaction.getCurrentDataServiceTransaction();
    WallVO vo = dao.addWallMessage((WallVO) newItem);
    dtx.createItem("wallVO", vo);
    dtx.commit(); 
  }
} 

Thanks

Reply via email to