Reverse merge: REPO-2516 / MNT-17845:: exists(NodeRef) fails if smart folders is enabled and filename begins with 'v' - moved to dev branch: DEV/MNT-17845-5.2.N

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137716 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2017-06-20 15:18:09 +00:00
parent f45b93b896
commit fc391b7839
3 changed files with 38 additions and 57 deletions

View File

@@ -74,23 +74,20 @@ public class Reference
if (nodeRef != null)
{
String id = nodeRef.getId();
if ((id != null) && (id.length() > 1) && (id.startsWith("" + VIRTUAL_TOKEN)))
if ((id != null) && (id.length() > 1))
{
char token = id.charAt(1);
Encoding encoding = Encodings.fromToken(token);
if (encoding != null)
{
return true;
}
char zeroChar = id.charAt(0);
return VIRTUAL_TOKEN.equals(zeroChar);
}
else
{
if (logger.isDebugEnabled())
{
logger.debug("NodeRef is not a reference.");
logger.debug("NodeRef with null ID.");
}
}
}
return false;
}
@@ -110,16 +107,18 @@ public class Reference
* @param nodeRef
* @return the {@link Reference} object corresponding to the given
* {@link NodeRef}
* @throws ReferenceParseException
* if an error occurs during the reference string parsing
* @throws ReferenceEncodingException
* if the {@link NodeRef} ID has an invalid virtual token prefix
* or it uses an invalid encoding token
* @throws ReferenceParseException if an error occurs during the reference
* string parsing
* @throws ReferenceEncodingException if the {@link NodeRef} ID has an
* invalid virtual token prefix or it uses an invalid encoding
* token
*/
public static final Reference fromNodeRef(NodeRef nodeRef) throws ReferenceParseException, ReferenceEncodingException
public static final Reference fromNodeRef(NodeRef nodeRef) throws ReferenceParseException,
ReferenceEncodingException
{
String id = nodeRef.getId();
if (id.startsWith("" + VIRTUAL_TOKEN) && (id.length() > 1)) // belts-and-braces
if (id.startsWith("" + VIRTUAL_TOKEN)
&& (id.length() > 1)) // belts-and-braces
{
char token = id.charAt(1);
Encoding encoding = Encodings.fromToken(token);
@@ -151,7 +150,7 @@ public class Reference
private static long _trace_refCount = 0;
private static final long _trace_refBatchSize = 4096 * 2;
private static final long _trace_refBatchSize = 4096*2;
private static synchronized void _trace_avg_ref_length(long refLength)
{
@@ -176,14 +175,12 @@ public class Reference
/**
* Constructor
*
* @param encoding
* the default {@link Encoding} of the new resource - to be used
* where an encoding is required and none is specified
* @param encoding the default {@link Encoding} of the new resource - to be
* used where an encoding is required and none is specified
* @param protocol
* @param resource
* @param parameters
* resource parameters - a copy of the provided list will be
* stored by this reference
* @param parameters resource parameters - a copy of the provided list will
* be stored by this reference
*/
public Reference(Encoding encoding, Protocol protocol, Resource resource, List<? extends Parameter> parameters)
{
@@ -195,7 +192,10 @@ public class Reference
public Reference(Encoding encoding, Protocol protocol, Resource resource)
{
this(encoding, protocol, resource, Collections.<Parameter> emptyList());
this(encoding,
protocol,
resource,
Collections.<Parameter> emptyList());
}
/**
@@ -261,7 +261,8 @@ public class Reference
*/
public NodeRef toNodeRef(StoreRef storeRef) throws ReferenceEncodingException
{
return toNodeRef(storeRef, this.encoding);
return toNodeRef(storeRef,
this.encoding);
}
/**
@@ -277,14 +278,16 @@ public class Reference
// TODO: move non-native encoding to encoding object itself
if (!encoding.urlNative)
{
id = new String(org.apache.commons.codec.binary.Base64.encodeBase64(id.getBytes(), false));
id = new String(org.apache.commons.codec.binary.Base64.encodeBase64(id.getBytes(),
false));
}
StringBuilder idBuilder = new StringBuilder();
idBuilder.append(VIRTUAL_TOKEN);
idBuilder.append(encoding.token);
idBuilder.append(id);
NodeRef theNode = new NodeRef(storeRef, idBuilder.toString());
NodeRef theNode = new NodeRef(storeRef,
idBuilder.toString());
if (logger.isTraceEnabled())
{
@@ -307,7 +310,8 @@ public class Reference
*/
public <R> R execute(ProtocolMethod<R> method) throws ProtocolMethodException
{
return this.protocol.dispatch(method, this);
return this.protocol.dispatch(method,
this);
}
/**
@@ -319,12 +323,13 @@ public class Reference
*
* @param mutatedNodeRef
* @return a mutated version of this {@link Reference} corresponding to the
* given mutated node or <code>this</code> Reference if no mutations
* are detected
* given mutated node or
* <code>this</code> Reference if no mutations are detected
*/
public Reference propagateNodeRefMutations(NodeRef mutatedNodeRef)
{
return protocol.propagateNodeRefMutations(mutatedNodeRef, this);
return protocol.propagateNodeRefMutations(mutatedNodeRef,
this);
}
@Override
@@ -336,7 +341,8 @@ public class Reference
}
catch (ReferenceEncodingException e)
{
logger.error("Invalid reference", e);
logger.error("Invalid reference",
e);
return super.toString();
}
}