aboutsummaryrefslogtreecommitdiffstats
path: root/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/jira/JiraIssue.java
blob: 0d7663227423264afa871c785c3300fa439ddf19 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.jira;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.time.Instant;
import java.util.Date;

/**
 * @author mpolden
 */
@JsonIgnoreProperties(ignoreUnknown = true)
public class JiraIssue {
    public final String key;
    private final Fields fields;

    @JsonCreator
    public JiraIssue(@JsonProperty("key") String key, @JsonProperty("fields") Fields fields) {
        this.key = key;
        this.fields = fields;
    }

    public Instant lastUpdated() {
        return fields.lastUpdated;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Fields {
        final Instant lastUpdated;

        @JsonCreator
        public Fields(
                @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'hh:mm:ss.SSSZ", timezone = "UTC")
                @JsonProperty("updated") Date updated) {
            lastUpdated = updated.toInstant();
        }

        public Fields(Instant instant) {
            this.lastUpdated = instant;
        }
    }
}