Merged V3.0 to HEAD

11410: Activity Service - iBatis mapping files for MS SQL Server (using AlfrescoSQLServerDialect)
          Can be Enterprised when dual build is set up
   11414: Fix for missing servlet reference in repo web.xml
   11415: Activity Service - iBatis mapping files for new Oracle dialects (using AlfrescoOracle10gDialect or AlfrescoOracle9iDialect)
          Can be Entperprised when dual build is up
   11424: Remove conflicting java mail libraries.
          NOTE: Might affect 'CMIS web service implementation'
   11426: Activity Service - use lower-case columns
   11428: ETHREEOH-300: Site contributor can not delete his own blog posts
   11431: Removed tutorial from Guest home
   11432: ETHREEOH-198: SiteService is not MT enabled
   11440: Close all ScrollableResults in try{} finally{}
   11442: Fix for ETHREEOH-268, ETHREEOH-269, ETHREEOH-431, ETHREEOH-438, ETHREEOH-456, ETHREEOH-468, ETHREEOH-532
   11443: Update to JSF client Help URL
   11444: Build fix
   11447: MT - fix ETHREEOH-530
   11448: Fix for ETHREEOH-424: Edit Web Content: dojo.data.fromrfc3339 is not a function
   11449: Fix for ETHREEOH-218: DM forms should be disabled


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12427 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2008-12-17 06:49:28 +00:00
parent fc7a11387e
commit f74699749b
35 changed files with 1301 additions and 646 deletions

View File

@@ -1362,16 +1362,26 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults childNodeIds = (ScrollableResults) getHibernateTemplate().execute(getChildNodeIdsCallback);
while (childNodeIds.next())
ScrollableResults childNodeIds = null;
try
{
Long childNodeId = childNodeIds.getLong(0);
parentAssocsCache.remove(childNodeId);
if (isDebugParentAssocCacheEnabled)
childNodeIds = (ScrollableResults) getHibernateTemplate().execute(getChildNodeIdsCallback);
while (childNodeIds.next())
{
loggerParentAssocsCache.debug("\n" +
"Parent associations cache - Removing entry: \n" +
" Node: " + childNodeId);
Long childNodeId = childNodeIds.getLong(0);
parentAssocsCache.remove(childNodeId);
if (isDebugParentAssocCacheEnabled)
{
loggerParentAssocsCache.debug("\n" + "Parent associations cache - Removing entry: \n" + " Node: " + childNodeId);
}
}
}
finally
{
if(childNodeIds != null)
{
childNodeIds.close();
}
}
HibernateCallback deleteParentAssocsCallback = new HibernateCallback()
@@ -1848,16 +1858,28 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, queryCallback);
// Now recurse, if required
if (recurse)
ScrollableResults queryResults = null;
try
{
for (Long childNodeId : childNodeIds)
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, queryCallback);
// Now recurse, if required
if (recurse)
{
getChildAssocs(childNodeId, resultsCallback, recurse);
}
for (Long childNodeId : childNodeIds)
{
getChildAssocs(childNodeId, resultsCallback, recurse);
}
}
// Done
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -1887,8 +1909,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -1927,8 +1960,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -1963,8 +2007,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -2005,8 +2060,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -2024,8 +2090,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -2043,8 +2120,19 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
convertToChildAssocRefs(parentNode, queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -2215,8 +2303,20 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
processNodeResults(queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
processNodeResults(queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -2234,8 +2334,20 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
processNodeResults(queryResults, resultsCallback);
ScrollableResults queryResults = null;
try
{
queryResults = (ScrollableResults) getHibernateTemplate().execute(callback);
processNodeResults(queryResults, resultsCallback);
}
finally
{
if (queryResults != null)
{
queryResults.close();
}
}
// Done
}
@@ -2695,18 +2807,29 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults results = (ScrollableResults) getHibernateTemplate().execute(callback);
// Callback with the results
Session session = getSession();
while (results.next())
ScrollableResults results = null;
try
{
Node node = (Node) results.get(0);
NodeRef nodeRef = node.getNodeRef();
QNameEntity nodeTypeQNameEntity = node.getTypeQName();
QName nodeTypeQName = nodeTypeQNameEntity.getQName();
handler.handle(nodeRef, nodeTypeQName, propertyQName, value);
// Flush if required
DirtySessionMethodInterceptor.flushSession(session);
results = (ScrollableResults) getHibernateTemplate().execute(callback);
// Callback with the results
Session session = getSession();
while (results.next())
{
Node node = (Node) results.get(0);
NodeRef nodeRef = node.getNodeRef();
QNameEntity nodeTypeQNameEntity = node.getTypeQName();
QName nodeTypeQName = nodeTypeQNameEntity.getQName();
handler.handle(nodeRef, nodeTypeQName, propertyQName, value);
// Flush if required
DirtySessionMethodInterceptor.flushSession(session);
}
}
finally
{
if (results != null)
{
results.close();
}
}
}
@@ -2762,59 +2885,71 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return query.scroll(ScrollMode.FORWARD_ONLY);
}
};
ScrollableResults results = (ScrollableResults) getHibernateTemplate().execute(callback);
// Loop through, extracting content URLs
TypeConverter converter = DefaultTypeConverter.INSTANCE;
int unflushedCount = 0;
while(results.next())
ScrollableResults results = null;
try
{
Node node = (Node) results.get()[0];
// loop through all the node properties
Map<PropertyMapKey, NodePropertyValue> properties = node.getProperties();
for (Map.Entry<PropertyMapKey, NodePropertyValue> entry : properties.entrySet())
results = (ScrollableResults) getHibernateTemplate().execute(callback);
// Loop through, extracting content URLs
TypeConverter converter = DefaultTypeConverter.INSTANCE;
int unflushedCount = 0;
while (results.next())
{
PropertyMapKey propertyKey = entry.getKey();
NodePropertyValue propertyValue = entry.getValue();
// ignore nulls
if (propertyValue == null)
Node node = (Node) results.get()[0];
// loop through all the node properties
Map<PropertyMapKey, NodePropertyValue> properties = node.getProperties();
for (Map.Entry<PropertyMapKey, NodePropertyValue> entry : properties.entrySet())
{
continue;
}
Long propertyQNameId = propertyKey.getQnameId();
// Get the actual value(s) as a collection
Collection<Serializable> values = propertyValue.getCollection(DataTypeDefinition.ANY);
// attempt to convert instance in the collection
for (Serializable value : values)
{
// ignore nulls (null entries in collections)
if (value == null)
PropertyMapKey propertyKey = entry.getKey();
NodePropertyValue propertyValue = entry.getValue();
// ignore nulls
if (propertyValue == null)
{
continue;
}
Serializable convertedValue = null;
try
Long propertyQNameId = propertyKey.getQnameId();
// Get the actual value(s) as a collection
Collection<Serializable> values = propertyValue.getCollection(DataTypeDefinition.ANY);
// attempt to convert instance in the collection
for (Serializable value : values)
{
convertedValue = (Serializable) converter.convert(actualDataTypeDefinition, value);
}
catch (Throwable e)
{
// The value can't be converted - forget it
}
if (convertedValue != null)
{
NodeRef nodeRef = node.getNodeRef();
QName nodeTypeQName = node.getTypeQName().getQName();
QName propertyQName = qnameDAO.getQName(propertyQNameId);
handler.handle(nodeRef, nodeTypeQName, propertyQName, convertedValue);
// ignore nulls (null entries in collections)
if (value == null)
{
continue;
}
Serializable convertedValue = null;
try
{
convertedValue = (Serializable) converter.convert(actualDataTypeDefinition, value);
}
catch (Throwable e)
{
// The value can't be converted - forget it
}
if (convertedValue != null)
{
NodeRef nodeRef = node.getNodeRef();
QName nodeTypeQName = node.getTypeQName().getQName();
QName propertyQName = qnameDAO.getQName(propertyQNameId);
handler.handle(nodeRef, nodeTypeQName, propertyQName, convertedValue);
}
}
}
unflushedCount++;
if (unflushedCount >= 1000)
{
// evict all data from the session
getSession().clear();
unflushedCount = 0;
}
}
unflushedCount++;
if (unflushedCount >= 1000)
}
finally
{
if (results != null)
{
// evict all data from the session
getSession().clear();
unflushedCount = 0;
results.close();
}
}
}