if (Strings.isNullOrEmpty(path)) {
path = RepositoryItemUid.PATH_ROOT;
}
final RepositoryItemUid uid = repository.createUid(path);
final AbstractStorageItem result;
if (target.isDirectory()) {
request.setRequestPath(path);
DefaultStorageCollectionItem coll =
new DefaultStorageCollectionItem(repository, request, target.canRead(), target.canWrite());
coll.setModified(target.lastModified());
coll.setCreated(target.lastModified());
result = coll;
}
else if (target.isFile() && !mustBeACollection) {
request.setRequestPath(path);
// FileComtentLocator is reusable, so create it only once but with correct MIME type
final FileContentLocator fileContent = new FileContentLocator(target, getMimeSupport().guessMimeTypeFromPath(
repository.getMimeRulesSource(), target.getAbsolutePath()));
try {
// Probe for link only if we KNOW it's not an attribute but "plain" content
final boolean isAttribute = uid.getBooleanAttributeValue(IsItemAttributeMetacontentAttribute.class);
final boolean isLink = !isAttribute && getLinkPersister().isLinkContent(fileContent);
if (isLink) {
try {
DefaultStorageLinkItem link =
new DefaultStorageLinkItem(repository, request, target.canRead(), target.canWrite(),