diff --git a/config/alfresco/bootstrap/webscripts/avmbrowse.get.html.ftl b/config/alfresco/bootstrap/webscripts/avmbrowse.get.html.ftl index f3df594ca9..65f619636d 100644 --- a/config/alfresco/bootstrap/webscripts/avmbrowse.get.html.ftl +++ b/config/alfresco/bootstrap/webscripts/avmbrowse.get.html.ftl @@ -1,24 +1,24 @@ - AVM Folder: ${folder.displayPath}/${folder.name} + AVM Folder: ${folder.displayPath} AVM Store: ${store.id}

- AVM Folder: ${folder.displayPath}/${folder.name} + AVM Folder: ${folder.displayPath}

<#if folder.parent?exists> - <#list folder.children as child> <#if child.isContainer> -
${folder.parent.properties.creator} ${folder.parent.size} ${folder.parent.properties.modified?datetime} .. + ${folder.parent.properties.creator}   ${folder.parent.properties.modified?datetime} ..
${child.properties.creator} ${child.size} ${child.properties.modified?datetime} >${child.name} + ${child.properties.creator}   ${child.properties.modified?datetime} >${child.name} <#else> ${child.properties.creator} ${child.size} ${child.properties.modified?datetime} ${child.name} diff --git a/source/java/org/alfresco/repo/avm/util/AVMUtil.java b/source/java/org/alfresco/repo/avm/util/AVMUtil.java index 0c4c1ff63a..4d795fe727 100644 --- a/source/java/org/alfresco/repo/avm/util/AVMUtil.java +++ b/source/java/org/alfresco/repo/avm/util/AVMUtil.java @@ -62,9 +62,11 @@ public class AVMUtil } /** - * Split a path into its parent path and its base name. + * Split a path into its parent path and its base name. If the store root path is passed, then return [null, ""]. + * * @param path The initial AVM path. - * @return An array of 2 Strings containing the parent path and the base + * + * @return An array of 2 Strings containing the parent AVM path (or null) and the base * name. */ public static String[] splitBase(String path) diff --git a/source/java/org/alfresco/repo/template/AVMTemplateNode.java b/source/java/org/alfresco/repo/template/AVMTemplateNode.java index ca6c9d7e72..7cd41eb72a 100644 --- a/source/java/org/alfresco/repo/template/AVMTemplateNode.java +++ b/source/java/org/alfresco/repo/template/AVMTemplateNode.java @@ -23,16 +23,14 @@ import java.io.StringReader; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import org.alfresco.model.ContentModel; import org.alfresco.model.WCMModel; import org.alfresco.repo.avm.AVMNodeConverter; +import org.alfresco.repo.avm.util.AVMUtil; import org.alfresco.repo.domain.PropertyValue; -import org.alfresco.repo.template.BaseContentNode.TemplateContentData; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.audit.AuditInfo; import org.alfresco.service.cmr.avm.AVMNodeDescriptor; @@ -41,7 +39,6 @@ import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentReader; -import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.TemplateImageResolver; @@ -53,7 +50,6 @@ import org.springframework.extensions.surf.util.Pair; import org.springframework.extensions.surf.util.URLEncoder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.util.StringUtils; import org.xml.sax.InputSource; import freemarker.ext.dom.NodeModel; @@ -316,13 +312,17 @@ public class AVMTemplateNode extends BasePermissionsNode implements NamespacePre // TemplateProperties API /** - * @return the immediate parent in the node path + * @return the immediate parent in the node path (null if root of store) */ public TemplateProperties getParent() { if (this.parent == null) { - this.parent = new AVMTemplateNode(this.getParentPath(), this.version, this.services, this.imageResolver); + String parentPath = this.getParentPath(); + if (parentPath != null) + { + this.parent = new AVMTemplateNode(parentPath, this.version, this.services, this.imageResolver); + } } return this.parent; } @@ -498,6 +498,10 @@ public class AVMTemplateNode extends BasePermissionsNode implements NamespacePre */ public String getMimetype() { + if (getIsContainer()) + { + return null; + } return this.services.getAVMService().getContentDataForRead(this.avmRef).getMimetype(); } @@ -507,6 +511,10 @@ public class AVMTemplateNode extends BasePermissionsNode implements NamespacePre */ public String getDisplayMimetype() { + if (getIsContainer()) + { + return null; + } final String mimetype = this.services.getAVMService().getContentDataForRead(this.avmRef).getMimetype(); return services.getMimetypeService().getDisplaysByMimetype().get(mimetype); } @@ -517,6 +525,10 @@ public class AVMTemplateNode extends BasePermissionsNode implements NamespacePre */ public String getEncoding() { + if (getIsContainer()) + { + return null; + } return this.services.getAVMService().getContentDataForRead(this.avmRef).getEncoding(); } @@ -526,6 +538,10 @@ public class AVMTemplateNode extends BasePermissionsNode implements NamespacePre */ public long getSize() { + if (getIsContainer()) + { + return -1; + } return this.services.getAVMService().getContentDataForRead(this.avmRef).getSize(); }