[ 
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)

Reply via email to