[exo-jcr-commits] exo-jcr SVN: r4900 - in jcr/branches/1.12.x/patch/1.12.11-GA: JCR-1661 and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Sep 13 07:36:01 EDT 2011


Author: dkuleshov
Date: 2011-09-13 07:36:00 -0400 (Tue, 13 Sep 2011)
New Revision: 4900

Added:
   jcr/branches/1.12.x/patch/1.12.11-GA/JCR-1661/
   jcr/branches/1.12.x/patch/1.12.11-GA/JCR-1661/JCR-1661.patch
Log:
JCR-1661: patch added

Added: jcr/branches/1.12.x/patch/1.12.11-GA/JCR-1661/JCR-1661.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.11-GA/JCR-1661/JCR-1661.patch	                        (rev 0)
+++ jcr/branches/1.12.x/patch/1.12.11-GA/JCR-1661/JCR-1661.patch	2011-09-13 11:36:00 UTC (rev 4900)
@@ -0,0 +1,425 @@
+Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestMultipleListenersNotifying.java
+===================================================================
+--- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestMultipleListenersNotifying.java	(revision 4874)
++++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestMultipleListenersNotifying.java	(working copy)
+@@ -20,8 +20,14 @@
+ 
+ import org.exoplatform.services.jcr.dataflow.ItemStateChangesLog;
+ import org.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener;
++import org.exoplatform.services.jcr.datamodel.ItemData;
++import org.exoplatform.services.jcr.datamodel.ItemType;
++import org.exoplatform.services.jcr.datamodel.NodeData;
++import org.exoplatform.services.jcr.datamodel.QPathEntry;
+ import org.exoplatform.services.jcr.impl.storage.SystemDataContainerHolder;
+ 
++import javax.jcr.RepositoryException;
++
+ /**
+  * Created by The eXo Platform SAS.
+  * 
+@@ -39,6 +45,12 @@
+       {
+          super(null, new SystemDataContainerHolder(null));
+       }
++
++      public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType, boolean createNullItemData)
++         throws RepositoryException
++      {
++         return null;
++      }
+    }
+ 
+    class Counter
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java	(working copy)
+@@ -70,6 +70,24 @@
+    ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType) throws RepositoryException;
+ 
+    /**
++    * Find Item by parent (id) and name (with path index) of defined type and create 
++    * or not (defined by createNullItemData) null item data.
++    * 
++    * @param parent 
++    *          NodeData
++    * @param name 
++    *          item name
++    * @param itemType 
++    *          itemType
++    * @param createNullItemData 
++    *          defines if NullItemData should be created          
++    * @return ItemData, data by parent and name
++    * @throws RepositoryException
++    */
++   ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType, boolean createNullItemData)
++      throws RepositoryException;
++
++   /**
+     * Find Item by identifier.
+     * 
+     * @param String identifier
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java	(working copy)
+@@ -576,7 +576,7 @@
+ 
+       PropertyData prop =
+          (PropertyData)dataManager.getItemData(((NodeData)getData()), new QPathEntry(Constants.JCR_MIXINTYPES, 0),
+-            ItemType.PROPERTY);
++            ItemType.PROPERTY, false);
+       ItemState state;
+ 
+       if (prop != null)
+@@ -1775,7 +1775,7 @@
+ 
+       for (PropertyDefinitionData pd : ntmanager.getAllPropertyDefinitions(removedName))
+       {
+-         ItemData p = dataManager.getItemData(nodeData(), new QPathEntry(pd.getName(), 1), ItemType.PROPERTY);
++         ItemData p = dataManager.getItemData(nodeData(), new QPathEntry(pd.getName(), 1), ItemType.PROPERTY, false);
+          if (p != null && !p.isNode())
+             // remove it
+             dataManager.delete(p, ancestorToSave);
+@@ -2853,13 +2853,15 @@
+ 
+       int ind = 1;
+ 
+-      NodeData sibling = (NodeData)dataManager.getItemData(parentNode, new QPathEntry(nameToAdd, ind), ItemType.NODE);
++      NodeData sibling =
++         (NodeData)dataManager.getItemData(parentNode, new QPathEntry(nameToAdd, ind), ItemType.NODE, false);
+       while (sibling != null)
+       {
+          if (allowSns)
+          {
+             ind++;
+-            sibling = (NodeData)dataManager.getItemData(parentNode, new QPathEntry(nameToAdd, ind), ItemType.NODE);
++            sibling =
++               (NodeData)dataManager.getItemData(parentNode, new QPathEntry(nameToAdd, ind), ItemType.NODE, false);
+          }
+          else
+          {
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	(working copy)
+@@ -224,6 +224,12 @@
+     */
+    public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType) throws RepositoryException
+    {
++      return getItemData(parent, name, itemType, true);
++   }
++
++   public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType, boolean createNullItemData)
++      throws RepositoryException
++   {
+       if (name.getName().equals(JCRPath.PARENT_RELPATH) && name.getNamespace().equals(Constants.NS_DEFAULT_URI))
+       {
+          if (parent.getIdentifier().equals(Constants.ROOT_UUID))
+@@ -249,7 +255,7 @@
+             return null;
+          }
+          // 2. Try from txdatamanager
+-         data = transactionableManager.getItemData(parent, name, itemType);
++         data = transactionableManager.getItemData(parent, name, itemType, createNullItemData);
+       }
+       else if (!state.isDeleted())
+       {
+@@ -328,6 +334,31 @@
+    public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, ItemType itemType, boolean apiRead)
+       throws RepositoryException
+    {
++      return getItem(parent, name, pool, itemType, apiRead, true);
++   }
++
++   /**
++    * For internal use. Return Item by parent NodeDada and the name of searched item.
++    * 
++    * @param parent
++    *          - parent of the searched item
++    * @param name
++    *          - item name
++    * @param itemType
++    *          - item type
++    * @param pool
++    *          - indicates does the item fall in pool
++    * @param apiRead 
++    *          - if true will call postRead Action and check permissions              
++    * @param createNullItemData
++    *          - defines if there is a need to create NullItemData  
++    *          
++    * @return existed item or null if not found
++    * @throws RepositoryException
++    */
++   public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, ItemType itemType, boolean apiRead,
++      boolean createNullItemData) throws RepositoryException
++   {
+       long start = System.currentTimeMillis();
+       if (log.isDebugEnabled())
+       {
+@@ -337,7 +368,7 @@
+       ItemImpl item = null;
+       try
+       {
+-         return item = readItem(getItemData(parent, name, itemType), parent, pool, apiRead);
++         return item = readItem(getItemData(parent, name, itemType, createNullItemData), parent, pool, apiRead);
+       }
+       finally
+       {
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java	(working copy)
+@@ -118,7 +118,7 @@
+          {
+             final ItemData pdata =
+                avoidCheckExistedChildItems ? null : targetDataManager.getItemData(parent, new QPathEntry(
+-                  ndef.getName(), 0), ItemType.NODE);
++                  ndef.getName(), 0), ItemType.NODE, false);
+             if (pdata == null && !addedNodes.contains(ndef.getName()) || pdata != null && !pdata.isNode())
+             {
+ 
+@@ -163,7 +163,7 @@
+ 
+             final ItemData pdata =
+                avoidCheckExistedChildItems ? null : targetDataManager.getItemData(parent, new QPathEntry(
+-                  pdef.getName(), 0), ItemType.PROPERTY);
++                  pdef.getName(), 0), ItemType.PROPERTY, false);
+             if (pdata == null && !addedProperties.contains(pdef.getName()) || pdata != null && pdata.isNode())
+             {
+ 
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java	(working copy)
+@@ -419,7 +419,8 @@
+       PropertyImpl prevProp;
+       PropertyDefinitionDatas defs;
+       ItemImpl prevItem =
+-         dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0), true, ItemType.PROPERTY);
++         dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0), true, ItemType.PROPERTY, true,
++            false);
+ 
+       NodeTypeDataManager ntm = session.getWorkspace().getNodeTypesHolder();
+       NodeData parentData = (NodeData)parentNode.getData();
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java	(working copy)
+@@ -229,7 +229,7 @@
+       ItemData sameNameNode = null;
+       try
+       {
+-         sameNameNode = dataConsumer.getItemData(parentData, new QPathEntry(name, 0), ItemType.NODE);
++         sameNameNode = dataConsumer.getItemData(parentData, new QPathEntry(name, 0), ItemType.NODE, false);
+       }
+       catch (PathNotFoundException e)
+       {
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java	(working copy)
+@@ -119,6 +119,15 @@
+    /**
+     * {@inheritDoc}
+     */
++   public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType, boolean createNullItemData)
++      throws RepositoryException
++   {
++      return copyItemData(storageDataManager.getItemData(parentData, name, itemType, createNullItemData));
++   }
++
++   /**
++    * {@inheritDoc}
++    */
+    public ItemData getItemData(String identifier) throws RepositoryException
+    {
+       return copyItemData(storageDataManager.getItemData(identifier));
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java	(working copy)
+@@ -254,6 +254,15 @@
+     */
+    public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType) throws RepositoryException
+    {
++      return getItemData(parentData, name, itemType, true);
++   }
++
++   /**
++    * {@inheritDoc}
++    */
++   public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType, boolean createNullItemData)
++      throws RepositoryException
++   {
+       ItemData data = null;
+       if (txStarted())
+       {
+@@ -269,7 +278,7 @@
+       }
+       else
+       {
+-         return storageDataManager.getItemData(parentData, name, itemType);
++         return storageDataManager.getItemData(parentData, name, itemType, createNullItemData);
+       }
+    }
+ 
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java	(working copy)
+@@ -139,15 +139,24 @@
+    @Override
+    public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType) throws RepositoryException
+    {
++      return getItemData(parentData, name, itemType, true);
++   }
++
++   /**
++    * {@inheritDoc}
++    */
++   public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType, boolean createNullItemData)
++      throws RepositoryException
++   {
+       if (parentData != null)
+       {
+          final QPath ipath = QPath.makeChildPath(parentData.getQPath(), name);
+          if (isSystemDescendant(ipath) && !this.equals(versionDataManager))
+          {
+-            return versionDataManager.getItemData(parentData, name, itemType);
++            return versionDataManager.getItemData(parentData, name, itemType, createNullItemData);
+          }
+       }
+-      return super.getItemData(parentData, name, itemType);
++      return super.getItemData(parentData, name, itemType, createNullItemData);
+    }
+ 
+    /**
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java	(working copy)
+@@ -182,9 +182,19 @@
+    /**
+     * {@inheritDoc}
+     */
+-   public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType) throws RepositoryException
++   public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType)
++      throws RepositoryException
+    {
+-      final ItemData item = persistentManager.getItemData(parent, name, itemType);
++      return getItemData(parent, name, itemType, true);
++   }
++
++   /**
++    * {@inheritDoc}
++    */
++   public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType, boolean createNullItemData)
++      throws RepositoryException
++   {
++      final ItemData item = persistentManager.getItemData(parent, name, itemType, createNullItemData);
+       return item != null && item.isNode() ? initACL(parent, (NodeData)item) : item;
+    }
+ 
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java	(working copy)
+@@ -994,7 +994,8 @@
+             LOG.error("Unexpected object found by FQN:" + getFqn() + " and key:" + key + ". Expected Set, but found:"
+                + existingObject.getClass().getName());
+          }
+-         else if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL)
++         else if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL
++            && cache.getMembers().size() > 1)
+          {
+             // to prevent consistency issue since we don't have the list in the local cache, we are in cluster env
+             // and we are in a non local mode, we clear the list in order to enforce other cluster nodes to reload it from the db
+@@ -1029,7 +1030,7 @@
+       @Override
+       public void apply()
+       {
+-         if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL)
++         if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL && cache.getMembers().size() > 1)
+          {
+             // to prevent consistency issue since we don't have the list in the local cache, we are in cluster env
+             // and we are in a non local mode, we remove all the patterns in order to enforce other cluster nodes to reload them from the db
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java	(revision 4874)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java	(working copy)
+@@ -402,7 +402,16 @@
+    @Override
+    public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType) throws RepositoryException
+    {
++      return getItemData(parentData, name, itemType, true);
++   }
+ 
++   /**
++    * {@inheritDoc}
++    */
++   public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType, boolean createNullItemData)
++      throws RepositoryException
++   {
++
+       // 1. Try from cache
+       ItemData data = getCachedItemData(parentData, name, itemType);
+ 
+@@ -419,7 +428,7 @@
+             data = getCachedItemData(parentData, name, itemType);
+             if (data == null)
+             {
+-               data = getPersistedItemData(parentData, name, itemType);
++               data = getPersistedItemData(parentData, name, itemType, createNullItemData);
+             }
+          }
+          finally
+@@ -755,11 +764,36 @@
+    protected ItemData getPersistedItemData(NodeData parentData, QPathEntry name, ItemType itemType)
+       throws RepositoryException
+    {
++      return getPersistedItemData(parentData, name, itemType, true);
++   }
++
++   /**
++    * Get persisted ItemData.
++    * 
++    * @param parentData
++    *          parent
++    * @param name
++    *          Item name
++    * @param itemType
++    *          item type
++    * @param createNullItemData
++    *          indicates if we need to create NullItemData  
++    * @return ItemData
++    * @throws RepositoryException
++    *           error
++    */
++   protected ItemData getPersistedItemData(NodeData parentData, QPathEntry name, ItemType itemType,
++      boolean createNullItemData) throws RepositoryException
++   {
+       ItemData data = super.getItemData(parentData, name, itemType);
+       if (cache.isEnabled())
+       {
+-         if (data == null)
++         if (data != null)
+          {
++            cache.put(data);
++         }
++         else if (createNullItemData)
++         {
+             if (itemType == ItemType.NODE || itemType == ItemType.UNKNOWN)
+             {
+                cache.put(new NullNodeData(parentData, name));
+@@ -769,10 +803,6 @@
+                cache.put(new NullPropertyData(parentData, name));
+             }
+          }
+-         else
+-         {
+-            cache.put(data);
+-         }
+       }
+       return data;
+    }



More information about the exo-jcr-commits mailing list