diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl index d2d5313416..13645279f6 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/solr/solr.lib.ftl @@ -45,47 +45,53 @@ <#macro nodeMetaDataJSON nodeMetaData filter> { - "id": ${nodeMetaData.nodeId?c}, - "nodeRef": <#if filter.includeNodeRef??>"${nodeMetaData.nodeRef.toString()}", - "type": <#if filter.includeType??><@qNameJSON qName=nodeMetaData.nodeType/>, - "aclId": <#if filter.includeAclId??><#if nodeMetaData.aclId??>${nodeMetaData.aclId?c}<#else>null, + "id": ${nodeMetaData.nodeId?c} + <#if filter.includeNodeRef??><#if nodeMetaData.nodeRef??>, "nodeRef": "${nodeMetaData.nodeRef.toString()}" + <#if filter.includeType??><#if nodeMetaData.nodeType??>, "type": <@qNameJSON qName=nodeMetaData.nodeType/> + <#if filter.includeAclId??><#if nodeMetaData.aclId??>, "aclId": ${nodeMetaData.aclId?c} <#if filter.includeProperties??> - "properties": { + <#if nodeMetaData.properties??> + , "properties": { <#list nodeMetaData.properties?keys as propName> "${propName}": ${nodeMetaData.properties[propName]}<#if propName_has_next>, - }, + } + <#if filter.includeAspects??> - "aspects": [ + <#if nodeMetaData.aspects??> + , "aspects": [ <#list nodeMetaData.aspects as aspectQName> <@nodeAspectJSON aspectQName=aspectQName indent=""/><#if aspectQName_has_next>, - ], + ] + <#if filter.includePaths??> - "paths": [ + <#if nodeMetaData.paths??> + , "paths": [ <#list nodeMetaData.paths as path> ${path}<#if path_has_next>, - ], + ] + <#if filter.includeParentAssociations??> <#if nodeMetaData.parentAssocs??> <#if (nodeMetaData.parentAssocs?size > 0)> - "parentAssocs": [ + , "parentAssocs": [ <#list nodeMetaData.parentAssocs as pa> "${pa}"<#if pa_has_next>, - ], - "parentAssocsCrc": <#if nodeMetaData.parentAssocsCrc??>${nodeMetaData.parentAssocsCrc?c}<#else>null, + ] + ,"parentAssocsCrc": <#if nodeMetaData.parentAssocsCrc??>${nodeMetaData.parentAssocsCrc?c}<#else>null <#if filter.includeChildAssociations??> <#if nodeMetaData.childAssocs??> <#if (nodeMetaData.childAssocs?size > 0)> - "childAssocs": [ + , "childAssocs": [ <#list nodeMetaData.childAssocs as ca> "${ca}"<#if ca_has_next>, @@ -93,6 +99,22 @@ + <#if filter.includeChildIds??> + <#if nodeMetaData.childIds??> + <#if (nodeMetaData.childIds?size > 0)> + , "childIds": [ + <#list nodeMetaData.childIds as ci> + ${ci?c}<#if ci_has_next>, + + ] + + + + <#if filter.includeOwner??> + <#if nodeMetaData.owner??> + , "owner": "${nodeMetaData.owner}" + + } diff --git a/source/java/org/alfresco/repo/web/scripts/solr/NodesMetaDataGet.java b/source/java/org/alfresco/repo/web/scripts/solr/NodesMetaDataGet.java index 3600efa14f..5a8893fdce 100644 --- a/source/java/org/alfresco/repo/web/scripts/solr/NodesMetaDataGet.java +++ b/source/java/org/alfresco/repo/web/scripts/solr/NodesMetaDataGet.java @@ -156,7 +156,11 @@ public class NodesMetaDataGet extends DeclarativeWebScript } if(o.has("includeParentAssociations")) { - filter.setIncludeParentAssociations(o.getBoolean("includeParentAssociations")); + filter.setIncludeParentAssociations(o.getBoolean("includeChildIds")); + } + if(o.has("includeChildIds")) + { + filter.setIncludeChildIds(o.getBoolean("includeChildIds")); } final ArrayList nodesMetaData = @@ -235,6 +239,8 @@ public class NodesMetaDataGet extends DeclarativeWebScript private List childAssocs; private List parentAssocs; private Long parentAssocsCrc; + private List childIds; + private String owner; public FreemarkerNodeMetaData(SOLRSerializer solrSerializer, NodeMetaData nodeMetaData) throws IOException, JSONException { @@ -255,18 +261,23 @@ public class NodesMetaDataGet extends DeclarativeWebScript setPaths(paths); setChildAssocs(nodeMetaData.getChildAssocs()); + setChildIds(nodeMetaData.getChildIds()); setParentAssocs(nodeMetaData.getParentAssocs()); setParentAssocsCrc(nodeMetaData.getParentAssocsCrc()); setAspects(nodeMetaData.getAspects()); Map props = nodeMetaData.getProperties(); - Map properties = (props != null ? new HashMap(props.size()) : null); - for(QName propName : props.keySet()) + if(props != null) { - Serializable value = props.get(propName); - properties.put(solrSerializer.serializeValue(String.class, propName), - solrSerializer.serialize(propName, value)); + Map properties = (props != null ? new HashMap(props.size()) : null); + for(QName propName : props.keySet()) + { + Serializable value = props.get(propName); + properties.put(solrSerializer.serializeValue(String.class, propName), + solrSerializer.serialize(propName, value)); + } + setProperties(properties); } - setProperties(properties); + setOwner(nodeMetaData.getOwner()); } public NodeRef getNodeRef() @@ -349,6 +360,27 @@ public class NodesMetaDataGet extends DeclarativeWebScript { this.parentAssocsCrc = parentAssocsCrc; } + + public List getChildIds() + { + return childIds; + } + + public void setChildIds(List childIds) + { + this.childIds = childIds; + } + + public String getOwner() + { + return owner; + } + + public void setOwner(String owner) + { + this.owner = owner; + } + } }