Package org.jboss.cache.optimistic

Examples of org.jboss.cache.optimistic.DataVersion


         option.setCacheModeLocal(queryCacheLocalWritesOnly || localPutsOnly);
         cache.remove( new Fqn( regionFqn, key ), "ITEM", option );

         option = new Option();
         option.setFailSilently( true );
         DataVersion dv = ( source != null && source.isVersioned() )
         ? new DataVersionAdapter( currentVersion, currentVersion, source.getVersionComparator(), source.toString() )
         : NonLockingDataVersion.INSTANCE;
         option.setDataVersion( dv );
         option.setCacheModeLocal(queryCacheLocalWritesOnly || localPutsOnly);
         cache.put( new Fqn( regionFqn, key ), ITEM, value, option );
View Full Code Here


         versionedCommands = new ArrayList<ReversibleCommand>(numCommands);
      }

      private void setDataVersion(VersionedDataCommand clone, Fqn fqn)
      {
         DataVersion versionToBroadcast = getVersionToBroadcast(workspace, fqn);
         clone.setDataVersion(versionToBroadcast);
         versionedCommands.add(clone);
      }
View Full Code Here

      WorkspaceNode workspaceNode;

      List<Fqn> nodesCreated = new ArrayList<Fqn>();

      DataVersion version = null;
      if (ctx.getOptionOverrides() != null && ctx.getOptionOverrides().getDataVersion() != null)
      {
         version = ctx.getOptionOverrides().getDataVersion();
         workspace.setVersioningImplicit(false);
      }

      // start with the ROOT node and then work our way down to the node necessary, creating nodes along the way.
      workspaceNode = workspace.getNode(Fqn.ROOT);
      if (debug) log.debug("GlobalTransaction: " + gtx + "; Root: " + workspaceNode);

      // we do not have the root in the workspace!  Put it into thr workspace now.
      if (workspaceNode == null)
      {
         NodeSPI node = dataContainer.getRoot();
         workspaceNode = lockAndCreateWorkspaceNode(nodeFactory, node, workspace, gtx, lockAcquisitionTimeout);
         workspace.addNode(workspaceNode);
         log.debug("Created root node in workspace.");
      }
      else
      {
         log.debug("Found root node in workspace.");
      }

      // iterate through the target Fqn's elements.
      int targetFqnSize = targetFqn.size(), currentDepth = 1;
      for (Object childName : targetFqn.peekElements())
      {
         boolean isTargetFqn = (currentDepth == targetFqnSize);
         currentDepth++;

         // current workspace node canot be null.
         // try and get the child of current node

         if (debug) log.debug("Attempting to get child " + childName);
         NodeSPI currentNode = workspaceNode.getNode().getChildDirect(childName);

         if (currentNode == null)
         {
            // first test that it exists in the workspace and has been created in thix tx!
            WorkspaceNode peekInWorkspace = workspace.getNode(Fqn.fromRelativeElements(workspaceNode.getFqn(), childName));
            if (peekInWorkspace != null && peekInWorkspace.isCreated())
            {
               // exists in workspace and has just been created.
               currentNode = peekInWorkspace.getNode();
               if (peekInWorkspace.isDeleted())
               {
                  peekInWorkspace.markAsDeleted(false);
                  // add in parent again
                  workspaceNode.addChild(peekInWorkspace);
               }
            }
         }

         if (currentNode == null)
         {
            // no child exists with this name; create it in the underlying data structure and then add it to the workspace.
            if (trace) log.trace("Creating new child, since it doesn't exist in the cache.");
            // we put the parent node into the workspace as we are changing it's children.
            // at this point "workspaceNode" refers to the parent of the current node.  It should never be null if
            // you got this far!
            if (workspaceNode.isDeleted())
            {
               //add a new one or overwrite an existing one that has been deleted
               if (trace)
                  log.trace("Parent node doesn't exist in workspace or has been deleted.  Adding to workspace.");
               workspace.addNode(workspaceNode);
               if (!(workspaceNode.getVersion() instanceof DefaultDataVersion))
                  workspaceNode.setVersioningImplicit(false);
            }
            else
            {
               if (trace) log.trace("Parent node exists: " + workspaceNode);
            }

            // get the version passed in, if we need to use explicit versioning.
            DataVersion versionToPassIn = null;
            if (isTargetFqn && !workspace.isVersioningImplicit()) versionToPassIn = version;

            NodeSPI newUnderlyingChildNode = workspaceNode.createChild(childName, workspaceNode.getNode(), cache, versionToPassIn);

            // now assign "workspaceNode" to the new child created.
View Full Code Here

   {
      // use explicit versioning
      if (ctx.getOptionOverrides() != null && ctx.getOptionOverrides().getDataVersion() != null)
      {
         workspace.setVersioningImplicit(false);
         DataVersion version = ctx.getOptionOverrides().getDataVersion();

         workspaceNode.setVersion(version);
         if (trace) log.trace("Setting versioning for node " + workspaceNode.getFqn() + " to explicit");

         workspaceNode.setVersioningImplicit(false);
View Full Code Here

      if (!isLocalModeForced(ctx))
      {
         // increment invalidations counter if statistics maintained
         incrementInvalidations();
         InvalidateCommand command = commandsFactory.buildInvalidateCommand(fqn);
         DataVersion dataVersion = getNodeVersion(workspace, fqn);
         if (dataVersion != null) ((OptimisticInvalidateCommand) command).setDataVersion(dataVersion);
         if (log.isDebugEnabled()) log.debug("Cache [" + rpcManager.getLocalAddress() + "] replicating " + command);
         // voila, invalidated!
         replicateCall(ctx, command, synchronous, ctx.getOptionOverrides());
      }
View Full Code Here

   protected DataVersion getNodeVersion(TransactionWorkspace w, Fqn f)
   {
      if (w == null) return null;
      WorkspaceNode wn = w.getNode(f);
      if (wn == null) return null; // JBCACHE-1297
      DataVersion v = wn.getVersion();

      if (wn.isVersioningImplicit())
      {
         // then send back an incremented version
         v = ((DefaultDataVersion) v).increment();
View Full Code Here

      Node toReturn = findInternal(fqn, false);

      if (version != null)
      {
         // we need to check the version of the data node...
         DataVersion nodeVersion = ((OptimisticTreeNode) toReturn).getVersion();
         if (log.isDebugEnabled())
            log.debug("looking for optimistic node [" + fqn + "] with version [" + version + "].  My version is [" + nodeVersion + "]");
         if (nodeVersion.newerThan(version))
         {
            // we have a versioning problem; throw an exception!
            throw new CacheException("Unable to validate versions.");
         }
View Full Code Here

         {
            // use explicit versioning
            if (ctx.getOptionOverrides() != null && ctx.getOptionOverrides().getDataVersion() != null)
            {
               workspace.setVersioningImplicit(false);
               DataVersion version = ctx.getOptionOverrides().getDataVersion();

               workspaceNode.setVersion(version);
               if (log.isTraceEnabled()) log.trace("Setting versioning for node " + workspaceNode.getFqn() + " to explicit");
               workspaceNode.setVersioningImplicit(false);
            }
View Full Code Here

      Node toReturn = findInternal(fqn, false);

      if (version != null)
      {
         // we need to check the version of the data node...
         DataVersion nodeVersion = ((OptimisticTreeNode) toReturn).getVersion();
         if (log.isDebugEnabled())
            log.debug("looking for optimistic node [" + fqn + "] with version [" + version + "].  My version is [" + nodeVersion + "]");
         if (nodeVersion.newerThan(version))
         {
            // we have a versioning problem; throw an exception!
            throw new CacheException("Unable to validate versions.");
         }
View Full Code Here

/*     */   }
/*     */
/*     */   public void writeUpdate(Object key, Object value, Object currentVersion, Object previousVersion) {
/*     */     try {
/* 117 */       Option option = new Option();
/* 118 */       DataVersion dv = (this.source != null) && (this.source.isVersioned()) ? new DataVersionAdapter(currentVersion, previousVersion, this.source.getVersionComparator(), this.source.toString()) : NonLockingDataVersion.INSTANCE;
/*     */
/* 121 */       option.setDataVersion(dv);
/* 122 */       option.setCacheModeLocal(this.localWritesOnly);
/* 123 */       this.cache.getInvocationContext().setOptionOverrides(option);
/* 124 */       this.cache.put(new Fqn(this.regionFqn, new Object[] { key }), "item", value);
View Full Code Here

TOP

Related Classes of org.jboss.cache.optimistic.DataVersion

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.