[ https://issues.apache.org/jira/browse/JCLOUDS-1504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17897781#comment-17897781 ]
Matthew Bellew edited comment on JCLOUDS-1504 at 11/13/24 12:28 AM: -------------------------------------------------------------------- I'm not setup to build jclouds, but I believe either of these changes would fix the problem. public static String expand(String template, Map<String, ?> variables) { if (checkNotNull(template, "template").length() < 3) return template.toString(); // skip expansion if there's no valid variables set. ex. \\{a} is the first valid checkNotNull(variables, "variables for %s", template); >>> if (variables.isEmpty()) >>> return template; boolean inVar = false; StringBuilder var = new StringBuilder(); StringBuilder builder = new StringBuilder(); for (char c : Lists.charactersOf(template)) { switch (c) { case '{': if (inVar) { builder.append(' {'); builder.append(var); var.setLength(0); } inVar = true; break; case '}': String key = var.toString(); Object value = variables.get(var.toString()); if (inVar) { if (value != null) builder.append(value); else builder.append('\\{').append(key).append('} '); } else { builder.append('} '); } var.setLength(0); inVar = false; break; default: if (inVar) var.append(c); else builder.append(c); } } >>> builder.append(var); return builder.toString(); } } was (Author: mbellew): I'm not setup to build jclouds, but I believe either of these changes would fix the problem. public static String expand(String template, Map<String, ?> variables) { if (checkNotNull(template, "template").length() < 3) return template.toString(); // skip expansion if there's no valid variables set. ex. \{a} is the first valid checkNotNull(variables, "variables for %s", template); >>> if (variables.isEmpty()) >>> return; boolean inVar = false; StringBuilder var = new StringBuilder(); StringBuilder builder = new StringBuilder(); for (char c : Lists.charactersOf(template)) { switch (c) { case '{': if (inVar) { builder.append('{'); builder.append(var); var.setLength(0); } inVar = true; break; case '}': String key = var.toString(); Object value = variables.get(var.toString()); if (inVar) { if (value != null) builder.append(value); else builder.append('\{').append(key).append('}'); } else { builder.append('}'); } var.setLength(0); inVar = false; break; default: if (inVar) var.append(c); else builder.append(c); } } >>> builder.append(var); return builder.toString(); } } > BlobStore.list(container, ListContainerOptions) returns collection containing > null elements > -------------------------------------------------------------------------------------------- > > Key: JCLOUDS-1504 > URL: https://issues.apache.org/jira/browse/JCLOUDS-1504 > Project: jclouds > Issue Type: Bug > Reporter: Енчо Белезирев > Priority: Blocker > Attachments: jclouds-wire.log, jclouds.log > > > Hello, > I am SAP developer and we are using jclouds for the communication with our > blob stores. > We have issue with the querying of the StorageMetadata for some blobs. We are > using the method from the BlobStore - > {code:java} > PageSet<? extends StorageMetadata> list(String container, > ListContainerOptions options);{code} > However, when we are using the method, we are providing > ListContainerOptions.Builder.withDetails() because we want to take directly > the userMetadata field from the StorageMetadata object and to use it later > on. Here comes the problem, sometimes, when the method is being executed, the > list that is being returned contains null objects. This is a problem because > we want each StorageMetadata to be non-null. > I have validated our entries in the container and it seemed that there are no > suspicious entries in it(which might cause the issue). > Could you share some information what could have caused the issue and > eventually, is there a way to workaround this? > > We are using aws-s3 implementation of the blob store. > -- This message was sent by Atlassian Jira (v8.20.10#820010)