[ 
https://issues.apache.org/jira/browse/BROOKLYN-460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15957191#comment-15957191
 ] 

ASF GitHub Bot commented on BROOKLYN-460:
-----------------------------------------

Github user neykov commented on a diff in the pull request:

    https://github.com/apache/brooklyn-server/pull/612#discussion_r109967070
  
    --- Diff: 
camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java
 ---
    @@ -227,7 +239,49 @@ protected Object 
getDecorationAttributeJsonValue(ConfigBag attrs) {
     
             @Override
             protected void addDecorationFromJsonMap(Map<?, ?> decorationJson, 
List<SpecParameter<?>> decorations) {
    -            throw new IllegalStateException("Not called");
    +            throw new 
UnsupportedOperationException("SpecParameterResolver.addDecorationFromJsonMap 
should never be called.");
    +        }
    +    }
    +
    +    public static class TagsResolver extends 
BrooklynEntityDecorationResolver<Iterable<Object>> {
    +        protected TagsResolver(BrooklynYamlTypeInstantiator.Factory 
instantiator) {
    +            super(instantiator);
    +        }
    +
    +        @Override
    +        public void decorate(EntitySpec<?> entitySpec, ConfigBag attrs, 
Set<String> encounteredRegisteredTypeIds) {
    +            Iterable<Object> decorationAttributeJsonValue = 
getDecorationAttributeJsonValue(attrs);
    +            if (decorationAttributeJsonValue != null) {
    +                entitySpec.tagsAdd(decorationAttributeJsonValue);
    +            }
    +        }
    +
    +        @Override
    +        protected String getDecorationKind() {
    +            return "Brooklyn Tags";
    +        }
    +
    +        @Override
    +        protected Iterable<Object> 
getDecorationAttributeJsonValue(ConfigBag attrs) {
    +            Object brooklynTags = 
attrs.getStringKey(BrooklynCampReservedKeys.BROOKLYN_TAGS);
    +            if (brooklynTags == null) {
    +                return null;
    +            } else if (!(brooklynTags instanceof List)) {
    +                throw new 
IllegalArgumentException(BrooklynCampReservedKeys.BROOKLYN_TAGS + " should be a 
List of String elements. You supplied " + brooklynTags);
    +            } else {
    +                checkArgument(Iterables.all((List) brooklynTags, new 
Predicate() {
    +                    @Override
    +                    public boolean apply(Object input) {
    +                        return !(input instanceof DeferredSupplier) && 
(input instanceof Serializable);
    --- End diff --
    
    That's not the only tag that we are setting. `WrappedEntity` and `ListTag` 
for example are not `Serializable`. As I said it's arbitrary/not required for 
the tags to be `Serializable`.


> Brooklyn Camp syntax for adding tags to an entity spec
> ------------------------------------------------------
>
>                 Key: BROOKLYN-460
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-460
>             Project: Brooklyn
>          Issue Type: New Feature
>            Reporter: Valentin Aitken
>            Priority: Minor
>
> Current requirement is to be able to supply String tags in an entity spec in 
> YAML so it can be then retrieved via REST API with {{GET 
> /v1/applications/<appId>/entities/<entityId>/tags}}.
> Example usage in a YAML blueprint:
> {noformat}
> services:
> - type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
>   brooklyn.tags:
>   - tag1
>   - tag2
> {noformat}
> Please shout if you have further requirements for {{brooklyn.tags}}.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to