[exo-jcr-commits] exo-jcr SVN: r4909 - in jcr/trunk/exo.jcr.component.core/src: main/java/org/exoplatform/services/jcr/impl/core and 7 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Sep 14 03:17:23 EDT 2011


Author: dkuleshov
Date: 2011-09-14 03:17:22 -0400 (Wed, 14 Sep 2011)
New Revision: 4909

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ShareableSupportedWorkspaceDataManager.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java
   jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestMultipleListenersNotifying.java
Log:
EXOJCR-1533: removed extra NullItemData creations

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -71,6 +71,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

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -449,7 +449,7 @@
       PropertyDefinitionDatas defs;
       ItemImpl prevItem =
          dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0), true,
-            dataManager.isNew(parentNode.getIdentifier()), ItemType.PROPERTY);
+            dataManager.isNew(parentNode.getIdentifier()), ItemType.PROPERTY, false);
 
       NodeTypeDataManager ntm = session.getWorkspace().getNodeTypesHolder();
       NodeData parentData = (NodeData)parentNode.getData();

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -641,7 +641,7 @@
 
       PropertyData prop =
          (PropertyData)dataManager.getItemData(((NodeData)getData()), new QPathEntry(Constants.JCR_MIXINTYPES, 0),
-            ItemType.PROPERTY);
+            ItemType.PROPERTY, false);
       ItemState state;
 
       if (prop != null)
@@ -1922,7 +1922,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
@@ -3061,13 +3061,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
          {

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -237,12 +237,23 @@
     */
    public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType) throws RepositoryException
    {
-      return getItemData(parent, name, false, itemType);
+      return getItemData(parent, name, false, itemType, true);
    }
 
-   private ItemData getItemData(NodeData parent, QPathEntry name, boolean skipCheckInPersistence, ItemType itemType)
+   /**
+    * {@inheritDoc}
+    */
+   public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType, boolean createNullItemData)
       throws RepositoryException
    {
+      return getItemData(parent, name, false, itemType, createNullItemData);
+   }
+
+
+   private ItemData getItemData(NodeData parent, QPathEntry name, boolean skipCheckInPersistence, 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))
@@ -270,7 +281,7 @@
          // 2. Try from txdatamanager
          if (!(skipCheckInPersistence))
          {
-            data = transactionableManager.getItemData(parent, name, itemType);
+            data = transactionableManager.getItemData(parent, name, itemType, createNullItemData);
          }
       }
       else if (!state.isDeleted())
@@ -364,6 +375,32 @@
    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 = 0;
       if (log.isDebugEnabled())
       {
@@ -374,7 +411,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
       {
@@ -405,9 +442,15 @@
    public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, boolean skipCheckInPersistence)
       throws RepositoryException
    {
-      return getItem(parent, name, pool, skipCheckInPersistence, ItemType.UNKNOWN);
+      return getItem(parent, name, pool, skipCheckInPersistence, ItemType.UNKNOWN, true);
    }
 
+   public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, boolean skipCheckInPersistence,
+      ItemType itemType) throws RepositoryException
+   {
+      return getItem(parent, name, pool, skipCheckInPersistence, itemType, true);
+   }
+
    /**
     * Return Item by parent NodeDada and the name of searched item.
     * 
@@ -425,7 +468,7 @@
     * @throws RepositoryException
     */
    public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, boolean skipCheckInPersistence,
-      ItemType itemType) throws RepositoryException
+      ItemType itemType, boolean createNullItemData) throws RepositoryException
    {
       long start = 0;
       if (log.isDebugEnabled())
@@ -437,7 +480,9 @@
       ItemImpl item = null;
       try
       {
-         return item = readItem(getItemData(parent, name, skipCheckInPersistence, itemType), parent, pool, true);
+         return item =
+            readItem(getItemData(parent, name, skipCheckInPersistence, itemType, createNullItemData), parent, pool,
+               true);
       }
       finally
       {
@@ -2817,4 +2862,5 @@
          return -i1.getData().getQPath().compareTo(i2.getData().getQPath());
       }
    }
+
 }

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -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())
             {
 

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -108,12 +108,21 @@
     */
    public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType) throws RepositoryException
    {
-      return 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
+   {
+      return persistentManager.getItemData(parent, name, itemType, createNullItemData);
+   }
+
+   /**
+    * {@inheritDoc}
+    */
    public ItemData getItemData(String identifier) throws RepositoryException
    {
       return persistentManager.getItemData(identifier);

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -723,6 +723,16 @@
    public ItemData getItemData(final NodeData parentData, final QPathEntry name, final ItemType itemType)
       throws RepositoryException
    {
+      return getItemData(parentData, name, itemType, true);
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   public ItemData getItemData(final NodeData parentData, final QPathEntry name, final ItemType itemType,
+      final boolean createNullItemData)
+      throws RepositoryException
+   {
       if (cache.isEnabled())
       {
          // 1. Try from cache
@@ -745,7 +755,7 @@
                   {
                      public ItemData run() throws RepositoryException
                      {
-                        return getPersistedItemData(parentData, name, itemType);
+                        return getPersistedItemData(parentData, name, itemType, createNullItemData);
                      }
                   });
                }
@@ -1732,6 +1742,46 @@
    }
 
    /**
+    * Get persisted ItemData.
+    * 
+    * @param parentData
+    *          parent
+    * @param name
+    *          Item name
+    * @param itemType
+    *          item type
+    * @param createNullItemData
+    *          indicates if nullItem should be created     
+    * @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)
+         {
+            cache.put(data);
+         }
+         else if (createNullItemData)
+         {
+            if (itemType == ItemType.NODE || itemType == ItemType.UNKNOWN)
+            {
+               cache.put(new NullNodeData(parentData, name));
+            }
+            else
+            {
+               cache.put(new NullPropertyData(parentData, name));
+            }
+         }
+      }
+      return data;
+   }
+
+   /**
     * Call
     * {@link org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager#getItemData(java.lang.String)
     * WorkspaceDataManager.getItemDataByIdentifier(java.lang.String)} and cache result if non null returned.

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ShareableSupportedWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ShareableSupportedWorkspaceDataManager.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ShareableSupportedWorkspaceDataManager.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -108,12 +108,21 @@
     */
    public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType) throws RepositoryException
    {
-      return 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
+   {
+      return persistentManager.getItemData(parent, name, itemType, createNullItemData);
+   }
+
+   /**
+    * {@inheritDoc}
+    */
    public ItemData getItemData(String identifier) throws RepositoryException
    {
       return persistentManager.getItemData(identifier);

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -183,15 +183,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);
    }
 
    /**

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -264,7 +264,8 @@
             LOG.error("Unexpected object found by key " + key.toString() + ". Expected Set, but found:"
                + existingObject.getClass().getName());
          }
-         else if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL)
+         else if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL
+            && cache.getCacheManager().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
@@ -328,7 +329,8 @@
             LOG.error("Unexpected object found by key " + key.toString() + ". Expected Map, but found:"
                + existingObject.getClass().getName());
          }
-         else if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL)
+         else if (!localMode && cache.getConfiguration().getCacheMode() != CacheMode.LOCAL
+            && cache.getCacheManager().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

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -1090,7 +1090,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
@@ -1129,7 +1130,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

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -120,6 +120,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));

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -349,6 +349,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())
       {
@@ -364,7 +373,7 @@
       }
       else
       {
-         return storageDataManager.getItemData(parentData, name, itemType);
+         return storageDataManager.getItemData(parentData, name, itemType, createNullItemData);
       }
    }
 

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -226,7 +226,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)
       {

Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestMultipleListenersNotifying.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestMultipleListenersNotifying.java	2011-09-14 07:05:54 UTC (rev 4908)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestMultipleListenersNotifying.java	2011-09-14 07:17:22 UTC (rev 4909)
@@ -20,6 +20,10 @@
 
 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.InvalidItemStateException;
@@ -48,6 +52,12 @@
       {
          super.save(new ChangesLogWrapper(changes));
       }
+
+      public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType, boolean createNullItemData)
+         throws RepositoryException
+      {
+         return null;
+      }
    }
 
    class Counter



More information about the exo-jcr-commits mailing list