Package org.jboss.system.server.profileservice.repository.clustered.metadata

Examples of org.jboss.system.server.profileservice.repository.clustered.metadata.RepositoryItemMetadata


   {
      ProfileKey key = new ProfileKey("domain", "server", "name");
      RepositoryContentMetadata rcm = new RepositoryContentMetadata(key);
      RepositoryRootMetadata rrm = new RepositoryRootMetadata("normal");
     
      RepositoryItemMetadata rim = new RepositoryItemMetadata();
      rim.setRelativePath("/item");
      rim.setOriginatingNode("192.168.100.1:1099");
      rim.setTimestamp(1);
      rrm.addItemMetadata(rim);
     
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/removed_item");
      rim.setRemoved(true);
      rim.setOriginatingNode("192.168.100.1:1099");
      rim.setTimestamp(2);
      rrm.addItemMetadata(rim);
     
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/dir.sar");
      rim.setDirectory(true);
      rim.setOriginatingNode("192.168.100.2:1099");
      rim.setTimestamp(4);
      rrm.addItemMetadata(rim);
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/dir.sar/item.jar");
      rim.setOriginatingNode("192.168.100.2:1099");
      rim.setTimestamp(4);
      rrm.addItemMetadata(rim);
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/dir.sar/META-INF");
      rim.setOriginatingNode("192.168.100.2:1099");
      rim.setDirectory(true);
      rim.setTimestamp(3);
      rrm.addItemMetadata(rim);
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/dir.sar/META-INF/jboss-beans.xml");
      rim.setDirectory(true);
      rim.setOriginatingNode("192.168.100.2:1099");
      rim.setTimestamp(3);
      rrm.addItemMetadata(rim);
     
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/removed_dir.ear");
      rim.setDirectory(true);
      rim.setOriginatingNode("192.168.100.2:1099");
      rim.setTimestamp(7);
      rim.setRemoved(true);
      rrm.addItemMetadata(rim);
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/removed_dir.ear/ejb.jar");
      rim.setOriginatingNode("192.168.100.2:1099");
      rim.setTimestamp(5);
      rim.setRemoved(true);
      rrm.addItemMetadata(rim);
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/removed_dir.ear/META-INF");
      rim.setDirectory(true);
      rim.setOriginatingNode("192.168.100.3:1099");
      rim.setTimestamp(7);
      rim.setRemoved(true);
      rrm.addItemMetadata(rim);
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/removed_dir.ear/META-INF/application.xml");
      rim.setDirectory(true);
      rim.setOriginatingNode("192.168.100.3:1099");
      rim.setTimestamp(7);
      rim.setRemoved(true);
      rrm.addItemMetadata(rim);
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/removed_dir.ear/war.war");
      rim.setOriginatingNode("192.168.100.3:1099");
      rim.setTimestamp(6);
      rim.setRemoved(true);
      rrm.addItemMetadata(rim);
     
      RepositoryRootMetadata emptyRRM = new RepositoryRootMetadata("empty");
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/");
      rim.setOriginatingNode("192.168.100.4:1099");
      rim.setTimestamp(10);
      rcm.setRepositories(Arrays.asList(new RepositoryRootMetadata[]{rrm, emptyRRM}));
     
      rim = new RepositoryItemMetadata();
      rim.setRelativePath("/");
      rim.setOriginatingNode("127.0.0.1:1099");
      rim.setTimestamp(20);
      emptyRRM.addItemMetadata(rim);
     
      File temp = new File(System.getProperty("java.io.tmpdir"));
     
      JAXBRepositoryContentMetadataPersister testee = new JAXBRepositoryContentMetadataPersister(temp.toURI());
View Full Code Here


   @Override
   protected void updateContentMetadata()
   {
      ContentModification mod = getRepositoryContentModification();
      RepositoryItemMetadata modItem = mod.getItem();
      if (modItem.isRemoved())
      {
         // Just record it
         super.updateContentMetadata();
      }
      else if (mod.getType() == Type.REMOVE_FROM_CLUSTER)
      {
         // An addition has been rejected. We don't record the item as
         // removed in the metadata, we just remove it.
         RepositoryContentMetadata contentMetadata = getContext().getInProgressMetadata();
         RepositoryRootMetadata rmd = contentMetadata.getRepositoryRootMetadata(mod.getRootName());
         rmd.removeItemMetadata(modItem.getRelativePathElements());        
      }
      else
      {
         // Add a record of the item, marked as removed
         RepositoryItemMetadata markedRemoved = getMarkedRemovedItem(mod);
         RepositoryContentMetadata contentMetadata = getContext().getInProgressMetadata();
         RepositoryRootMetadata rmd = contentMetadata.getRepositoryRootMetadata(mod.getRootName());
         rmd.addItemMetadata(markedRemoved);
      }
   }
View Full Code Here

         throw new RuntimeException("Cannot acquire global lock");
      }
      try
      {     
         RepositoryContentMetadata existingRCMD = new RepositoryContentMetadata(this.localContentManager.getOfficialContentMetadata());        
         RepositoryItemMetadata newRIMD = this.clusteringHandler.addDeploymentContent(vfsPath, contentIS);
         RepositoryRootMetadata existingRRMD = existingRCMD.getRepositoryRootMetadata(newRIMD.getRootName());
         boolean exists = existingRRMD != null && existingRRMD.getItemMetadata(newRIMD.getRelativePathElements()) != null;
         VirtualFile root = getCachedVirtualFile(namedURIMap.get(newRIMD.getRootName()));
         VirtualFile contentVF = root.getChild(newRIMD.getRelativePath());

         try
         {
            // Add the new virtual file to the cache
            repositoryName = addVirtualFileCache(contentVF);
View Full Code Here

                  for (RepositoryItemMetadata existingItem : existingRoot.getContent())
                  {
                     if (existingItem.isRemoved() // but check for re-add
                           && rmd.getItemMetadata(existingItem.getRelativePathElements()) == null)
                     {
                        rmd.addItemMetadata(new RepositoryItemMetadata(existingItem));
                     }
                  }
               }
            }
         }
View Full Code Here

      }     
   }

   public RepositoryItemMetadata getItemForAddition(String vfsPath) throws IOException
   {
      RepositoryItemMetadata item = new RepositoryItemMetadata();
      item.setRelativePath(vfsPath);
      List<String> pathElements = item.getRelativePathElements();
      String rootName = null;
      for (RepositoryRootMetadata rmd : getOfficialContentMetadata().getRepositories())
      {
         if (rmd.getItemMetadata(pathElements) != null)
         {
            // Exact match to existing item -- done
            rootName = rmd.getName();
            break;
         }
         else if (rootName == null)
         {
            // Use the first root that can accept children
            URI rootURI = namedURIMap.get(rmd.getName());
            VirtualFile vf = getCachedVirtualFile(rootURI);
            if (isDirectory(vf))
            {
               rootName = rmd.getName();
               break;              
            }
         }
      }
     
      if (rootName == null)
      {
         throw new IllegalStateException("No roots can accept children");
      }
     
      item.setRootName(rootName);
      return item;
   }
View Full Code Here

      RepositoryRootMetadata rmd = result.getRepositoryRootMetadata(toAdd.getRootName());
      if (rmd == null)
      {
         throw new IllegalArgumentException("Unknown root name " + toAdd.getRootName());
      }
      RepositoryItemMetadata remove = rmd.getItemMetadata(toAdd.getRelativePathElements());
      if (remove != null)
      {
         if (remove.isDirectory())
         {
            for (RepositoryItemMetadata rim : rmd.getContent())
            {
               if (rim.isChildOf(remove))
               {
                  rmd.removeItemMetadata(rim.getRelativePathElements());
               }
            }
         }
         rmd.removeItemMetadata(remove.getRelativePathElements());
      }
      rmd.addItemMetadata(toAdd);
      pendingStreams.put(toAdd, contentIS);     
      return result;
   }
View Full Code Here

      if (root == null)
      {
         throw new IllegalArgumentException(vf + " is not a child of any known roots");
      }
     
      RepositoryItemMetadata remove = root.getItemMetadata(path);
      if (remove != null)
      {
         if (isDirectory(vf))
         {
            for (RepositoryItemMetadata rim : root.getContent())
View Full Code Here

   {     
      boolean directory = isDirectory(file);
      long timestamp = file.getLastModified();
     
      List<String> pathElements = getRelativePath(file, root);
      RepositoryItemMetadata existing = existingRMD == null ? null : existingRMD.getItemMetadata(pathElements);
     
      // If there's an existing item, assume for now it's unchanged and keep existing originator
      String originator = existing == null ? this.localNodeName : existing.getOriginatingNode();     
      RepositoryItemMetadata md = new RepositoryItemMetadata(pathElements, timestamp, originator, directory, false);
      if (md.equals(existing) == false)
      {
         // above if test failing means this is a new item or
         // timestamp, removed or directory status has changed
         // In any case, this node is now the originator
         md.setOriginatingNode(this.localNodeName);
      }
     
      rmd.addItemMetadata(md);
     
      if (directory)
View Full Code Here

         drainPrerejectedAdds(mods);
         // A removal negates any preapprovedAdd as well
         mods.setPreapprovedAddParent(null);
        
         //
         RepositoryItemMetadata prerejectedRemove = mods.getPrerejectedRemoveParent();
         if (prerejectedRemove != null && item.isChildOf(prerejectedRemove) == false)
         {
            mods.setPrerejectedRemoveParent(null);
         }
        
View Full Code Here

      mods.setPrerejectedRemoveParent(null);
     
      Boolean allow = null;

      // See if this addition is preapproved as part of adding a new tree
      RepositoryItemMetadata  preapprovedAdd = mods.getPreapprovedAddParent();
      if (preapprovedAdd != null)
      {
         if (item.isChildOf(preapprovedAdd))
         {
            // just keep the same one
            allow = Boolean.TRUE;
         }
         else
         {
            // Clean up
            mods.setPreapprovedAddParent(null);
         }
      }
      else
      {
         // Addition wasn't preapproved. See if it was prerejected as part
         // of rejecting adding a new tree
        
         ContentModification prerejectedParentMod = mods.peekPrerejectedAddParent();
         while (prerejectedParentMod != null)
         {
            if (item.isChildOf(prerejectedParentMod.getItem()))
            {
               // rejected
               allow = Boolean.FALSE;
               break;
            }
            else
            {
               // We're done with children of prerejected parent so add the cached
               // modification to the overall list. This will cause it to
               // get executed *after* its children
               // (i.e. remove parent after removing children)
               mods.addModification(mods.popPrerejectedAddParent());
               // Start checking grandparent
               prerejectedParentMod = mods.peekPrerejectedAddParent();
            }
         }
      }
     
      if (allow == null)
      {
         // Check with our policy
         allow = Boolean.valueOf(isAdditionApproved(rootName, item, removedVersion));
      }
     
      if (allow.booleanValue())
      {        
         Type type = item.isDirectory() ? Type.MKDIR_TO_CLUSTER : Type.PUSH_TO_CLUSTER;
         mods.addModification(new ContentModification(type, rootName, item));
        
         if (mods.getPreapprovedAddParent() == null && item.isDirectory())
         {
            mods.setPreapprovedAddParent(item);
         }        
      }
      else
      {        
         // Addition not allowed; remote node must discard
        
         // If available use the removedVersion in ContentModifications to
         // help keep it around in metadata
         RepositoryItemMetadata modItem = removedVersion == null ? item : removedVersion;
         ContentModification mod = new ContentModification(Type.REMOVE_FROM_CLUSTER, rootName, modItem);
         if (item.isDirectory())
         {
            // Tell node to prepare for the removal
            mods.addModification(new ContentModification(Type.PREPARE_RMDIR_FROM_CLUSTER, rootName, modItem));
View Full Code Here

TOP

Related Classes of org.jboss.system.server.profileservice.repository.clustered.metadata.RepositoryItemMetadata

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.