You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Gallyam Biktashev (Jira)" <ji...@apache.org> on 2021/05/06 08:10:00 UTC

[jira] [Updated] (GROOVY-10073) Unable to use custom string representation in GString template

     [ https://issues.apache.org/jira/browse/GROOVY-10073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gallyam Biktashev updated GROOVY-10073:
---------------------------------------
    Description: 
I have a class
{code:java}
class JsonListAdapter implements List {
    private final List<Object> adaptee;
    private final JsonNode node;

    public JsonListAdapter(List<Object> adaptee, JsonNode node) {
        this.adaptee = adaptee;
        this.node = node;
    }

    // methods here

    @Override
    public String toString() {
        return node.toString();
    }
}
{code}
I'm expecting that it will work like
{code:java}
var json = "[\"v1\",\"v2\"]";
var node = parseJson(json);
var list = toList(node);
var result = gStringTemplateService.render("${variable}", Map.of("variable", new JsonListAdapter(list, node)));

// both assertions fail for now
Assertions.assertNotEquals("[v1, v2]", result);
Assertions.assertEquals(json, result);
{code}

  was:
I have a class
{code:java}
class JsonListAdapter {
    private final List<Object> adaptee;
    private final JsonNode node;

    public JsonListAdapter(List<Object> adaptee, JsonNode node) {
        this.adaptee = adaptee;
        this.node = node;
    }

    // methods here

    @Override
    public String toString() {
        return node.toString();
    }
}
{code}

I'm expecting that it will work like
{code:java}
var json = "[\"v1\",\"v2\"]";
var node = parseJson(json);
var list = toList(node);
var result = gStringTemplateService.render("${variable}", Map.of("variable", new JsonListAdapter(list, node)));

// both assertions fail for now
Assertions.assertNotEquals("[v1, v2]", result);
Assertions.assertEquals(json, result);
{code}


> Unable to use custom string representation in GString template
> --------------------------------------------------------------
>
>                 Key: GROOVY-10073
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10073
>             Project: Groovy
>          Issue Type: Bug
>          Components: Templating
>    Affects Versions: 2.5.14
>            Reporter: Gallyam Biktashev
>            Priority: Major
>
> I have a class
> {code:java}
> class JsonListAdapter implements List {
>     private final List<Object> adaptee;
>     private final JsonNode node;
>     public JsonListAdapter(List<Object> adaptee, JsonNode node) {
>         this.adaptee = adaptee;
>         this.node = node;
>     }
>     // methods here
>     @Override
>     public String toString() {
>         return node.toString();
>     }
> }
> {code}
> I'm expecting that it will work like
> {code:java}
> var json = "[\"v1\",\"v2\"]";
> var node = parseJson(json);
> var list = toList(node);
> var result = gStringTemplateService.render("${variable}", Map.of("variable", new JsonListAdapter(list, node)));
> // both assertions fail for now
> Assertions.assertNotEquals("[v1, v2]", result);
> Assertions.assertEquals(json, result);
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)