mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Merged V2.1 to HEAD:
6556: AVM performance tweaks 6557: WCM-758. 6558: Fixes WCM-753. 6559: better handling of rename, copy and paste for form instance data and renditions. addresses WCM-752 and partially addresses WCM-559. 6560: Renamed JndiTest.java until we decide to keep it or not. 6561: Oops. 6562: probable fix WCM-669 6563: Build fix after the removal of flushing suport 6564: Fix for WCM-728 6566: Support for avm index clustering via tracking - WCM-762 6567: Test fix after flush changes 6568: Fixed AWC-1517: Can now create space based on existing top-level space 6569: misc IE fixes. 6570: Various changes to improve AVM import performance and submit performance. 6571: Session flushing is now deprecated and doesn't fail with an exception. 6572: Reduced the iteration count to stress nextResults calls a bit more 6573: WS query sessions put back into cache after more results have been fetched. 6574: AR-1347: RepositoryServiceSoapBindingStub.queryAssociated() returns nothing when direction=target 6575: Fixed AR-1680: XPath metadata extraction now handles Node, NodeList and String return values 6577: Fix for AWC-1518 (User Homes renaming issue, and unreported issue with client config overriding of users home location) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6745 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -249,30 +249,16 @@ public class XPathMetadataExtracter extends AbstractMappingMetadataExtracter imp
|
||||
{
|
||||
String documentProperty = element.getKey();
|
||||
XPathExpression xpathExpression = element.getValue();
|
||||
// Execute it
|
||||
NodeList nodeList = (NodeList) xpathExpression.evaluate(document, XPathConstants.NODESET);
|
||||
// Convert the value
|
||||
// Get the value, assuming it is a nodeset
|
||||
Serializable value = null;
|
||||
int nodeCount = nodeList.getLength();
|
||||
if (nodeCount == 0)
|
||||
try
|
||||
{
|
||||
// No result
|
||||
value = getNodeSetValue(document, xpathExpression);
|
||||
}
|
||||
else if (nodeCount == 1)
|
||||
catch (XPathExpressionException e)
|
||||
{
|
||||
Node node = nodeList.item(0);
|
||||
// Get the string value
|
||||
value = node.getTextContent();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make a collection of the values
|
||||
ArrayList<String> stringValues = new ArrayList<String>(5);
|
||||
for (int i = 0; i < nodeCount; i++)
|
||||
{
|
||||
stringValues.add(nodeList.item(i).getTextContent());
|
||||
}
|
||||
value = stringValues;
|
||||
// That didn't work, so give it a try as a STRING
|
||||
value = getStringValue(document, xpathExpression);
|
||||
}
|
||||
// Put the value
|
||||
rawProperties.put(documentProperty, value);
|
||||
@@ -281,6 +267,57 @@ public class XPathMetadataExtracter extends AbstractMappingMetadataExtracter imp
|
||||
return rawProperties;
|
||||
}
|
||||
|
||||
private Serializable getStringValue(Document document, XPathExpression xpathExpression) throws XPathExpressionException
|
||||
{
|
||||
String value = (String) xpathExpression.evaluate(document, XPathConstants.STRING);
|
||||
// Done
|
||||
return value;
|
||||
}
|
||||
|
||||
private Serializable getNodeSetValue(Document document, XPathExpression xpathExpression) throws XPathExpressionException
|
||||
{
|
||||
// Execute it
|
||||
NodeList nodeList = null;
|
||||
try
|
||||
{
|
||||
nodeList = (NodeList) xpathExpression.evaluate(document, XPathConstants.NODESET);
|
||||
}
|
||||
catch (XPathExpressionException e)
|
||||
{
|
||||
// Expression didn't evaluate to a nodelist
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Unable to evaluate expression and return a NODESET: " + xpathExpression);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
// Convert the value
|
||||
Serializable value = null;
|
||||
int nodeCount = nodeList.getLength();
|
||||
if (nodeCount == 0)
|
||||
{
|
||||
// No result
|
||||
}
|
||||
else if (nodeCount == 1)
|
||||
{
|
||||
Node node = nodeList.item(0);
|
||||
// Get the string value
|
||||
value = node.getTextContent();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make a collection of the values
|
||||
ArrayList<String> stringValues = new ArrayList<String>(5);
|
||||
for (int i = 0; i < nodeCount; i++)
|
||||
{
|
||||
stringValues.add(nodeList.item(i).getTextContent());
|
||||
}
|
||||
value = stringValues;
|
||||
}
|
||||
// Done
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* A utility method to convert mapping properties to the Map form.
|
||||
*
|
||||
|
Reference in New Issue
Block a user