protected boolean preventiveNodeCachingTwoOrMoreClient(final Node node)
{
// Evitamos cachear con un nuevo id si todos los clientes ya usan
// dicho id, es el caso de un nodo que ya fue "cacheado preventivamente"
// por las vistas y se quiere una nueva referencia como string.
ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
ClientDocumentStfulImpl clientDocOwner = itsNatDoc.getClientDocumentStfulOwner();
NodeCacheRegistryImpl nodeCache = clientDocOwner.getNodeCacheRegistry(); // No puede ser nula
final String oldId = nodeCache.getId(node);
ClientDocStfulTask clientTask = new ClientDocStfulTask()
{
public boolean doTask(ClientDocumentStfulImpl clientDoc,Object arg)
{
boolean cached = isNodeCachedWithId(node,oldId,clientDoc);
return cached; // true = continuar
}
};
boolean res = itsNatDoc.executeTaskOnClients(clientTask,null);
if (res) return false; // Ya est� cacheado por todos los clientes con el mismo id
// Debe generarse un nuevo id por el documento pues algunos ids pueden compartirse entre cach�s de un mismo documento como es este caso
String id = NodeCacheRegistryImpl.generateUniqueId(itsNatDoc);
ClientDocumentStfulImpl[] allClient = itsNatDoc.getAllClientDocumentStfulsCopy();
for(int i = 0; i < allClient.length; i++)
{
ClientDocumentStfulImpl clientDoc = allClient[i];
preventiveNodeCaching(node,id,clientDoc);
}