< prev index next >

vcs/src/main/java/org/openjdk/skara/vcs/openjdk/OpenJDKTag.java

Print this page

 35     private final String buildNum;
 36 
 37     private OpenJDKTag(Tag tag, String prefix, String version, String buildPrefix, String buildNum) {
 38         this.tag = tag;
 39         this.prefix = prefix;
 40         this.version = version;
 41         this.buildPrefix = buildPrefix;
 42         this.buildNum = buildNum;
 43     }
 44 
 45     /**
 46      * The patterns have the following groups:
 47      *
 48      *                prefix   version  update  buildPrefix  buildNum
 49      *                -------  -------  ------  -----------  ------
 50      * jdk-9.1+27  -> jdk-9.1  9.1              +            27
 51      * jdk8-b90    -> jdk8     8                -b           90
 52      * jdk7u40-b20 -> jdk7u40  7u40     u20     -b           29
 53      * hs24-b30    -> hs24     24               -b           30
 54      * hs23.6-b19  -> hs23.6   23.6     .6      -b           19

 55      */
 56 
 57     private final static String legacyOpenJDKVersionPattern = "(jdk([0-9]{1,2}(u[0-9]{1,3})?))";
 58     private final static String legacyHSVersionPattern = "((hs[0-9]{1,2}(\\.[0-9]{1,3})?))";
 59     private final static String legacyBuildPattern = "(-b)([0-9]{2,3})";
 60     private final static String OpenJDKVersionPattern = "(jdk-([0-9]+(\\.[0-9]){0,3}))(\\+)([0-9]+)";

 61 
 62     private final static List<Pattern> tagPatterns = List.of(Pattern.compile(legacyOpenJDKVersionPattern + legacyBuildPattern),
 63                                                              Pattern.compile(legacyHSVersionPattern + legacyBuildPattern),
 64                                                              Pattern.compile(OpenJDKVersionPattern));

 65 
 66     /**
 67      * Attempts to create an OpenJDKTag instance from a general Tag.
 68      *
 69      * This will succeed if the tag follows the OpenJDK tag formatting
 70      * conventions.
 71      * @param tag
 72      * @return
 73      */
 74     public static Optional<OpenJDKTag> create(Tag tag) {
 75         for (var pattern : tagPatterns) {
 76             var matcher = pattern.matcher(tag.name());
 77             if (matcher.matches()) {
 78                 return Optional.of(new OpenJDKTag(tag, matcher.group(1), matcher.group(2), matcher.group(4), matcher.group(5)));
 79             }
 80         }
 81 
 82         return Optional.empty();
 83     }
 84 

 89      */
 90     public Tag tag() {
 91         return tag;
 92     }
 93 
 94     /**
 95      * Version number, such as 11, 9.1, 8, 7u20.
 96      *
 97      * @return
 98      */
 99     public String version() {
100         return version;
101     }
102 
103     /**
104      * Build number.
105      *
106      * @return
107      */
108     public int buildNum() {



109         return Integer.parseInt(buildNum);
110     }
111 
112     /**
113      * Tag of the previous build (if any).
114      *
115      * @return
116      */
117     public Optional<OpenJDKTag> previous() {
118         if (buildNum() == 0) {
119             return Optional.empty();
120         }
121 
122         // Make sure build numbers < 10 for JDK 9 tags are not prefixed with '0'
123         var previousBuildNum = buildNum() - 1;
124         var formattedBuildNum = String.format(buildPrefix.equals("+") ? "%d" : "%02d", previousBuildNum);
125         var tagName = prefix + buildPrefix + formattedBuildNum;
126         var tag = new Tag(tagName);
127         return create(tag);
128     }

 35     private final String buildNum;
 36 
 37     private OpenJDKTag(Tag tag, String prefix, String version, String buildPrefix, String buildNum) {
 38         this.tag = tag;
 39         this.prefix = prefix;
 40         this.version = version;
 41         this.buildPrefix = buildPrefix;
 42         this.buildNum = buildNum;
 43     }
 44 
 45     /**
 46      * The patterns have the following groups:
 47      *
 48      *                prefix   version  update  buildPrefix  buildNum
 49      *                -------  -------  ------  -----------  ------
 50      * jdk-9.1+27  -> jdk-9.1  9.1              +            27
 51      * jdk8-b90    -> jdk8     8                -b           90
 52      * jdk7u40-b20 -> jdk7u40  7u40     u20     -b           29
 53      * hs24-b30    -> hs24     24               -b           30
 54      * hs23.6-b19  -> hs23.6   23.6     .6      -b           19
 55      * 11.1+22     -> 11.1     11.1     .1      +            22
 56      */
 57 
 58     private final static String legacyOpenJDKVersionPattern = "(jdk([0-9]{1,2}(u[0-9]{1,3})?))";
 59     private final static String legacyHSVersionPattern = "((hs[0-9]{1,2}(\\.[0-9]{1,3})?))";
 60     private final static String legacyBuildPattern = "(-b)([0-9]{2,3})";
 61     private final static String OpenJDKVersionPattern = "(jdk-([0-9]+(\\.[0-9]){0,3}))(\\+)([0-9]+)";
 62     private final static String OpenJFXVersionPattern = "((?:jdk-){0,1}([1-9](?:(?:[0-9]*)(\\.(?:0|[1-9][0-9]*)){0,3})))(?:(\\+)([0-9]+)|(-ga))";
 63 
 64     private final static List<Pattern> tagPatterns = List.of(Pattern.compile(legacyOpenJDKVersionPattern + legacyBuildPattern),
 65                                                              Pattern.compile(legacyHSVersionPattern + legacyBuildPattern),
 66                                                              Pattern.compile(OpenJDKVersionPattern),
 67                                                              Pattern.compile(OpenJFXVersionPattern));
 68 
 69     /**
 70      * Attempts to create an OpenJDKTag instance from a general Tag.
 71      *
 72      * This will succeed if the tag follows the OpenJDK tag formatting
 73      * conventions.
 74      * @param tag
 75      * @return
 76      */
 77     public static Optional<OpenJDKTag> create(Tag tag) {
 78         for (var pattern : tagPatterns) {
 79             var matcher = pattern.matcher(tag.name());
 80             if (matcher.matches()) {
 81                 return Optional.of(new OpenJDKTag(tag, matcher.group(1), matcher.group(2), matcher.group(4), matcher.group(5)));
 82             }
 83         }
 84 
 85         return Optional.empty();
 86     }
 87 

 92      */
 93     public Tag tag() {
 94         return tag;
 95     }
 96 
 97     /**
 98      * Version number, such as 11, 9.1, 8, 7u20.
 99      *
100      * @return
101      */
102     public String version() {
103         return version;
104     }
105 
106     /**
107      * Build number.
108      *
109      * @return
110      */
111     public int buildNum() {
112         if (buildNum == null) {
113             return 0;
114         }
115         return Integer.parseInt(buildNum);
116     }
117 
118     /**
119      * Tag of the previous build (if any).
120      *
121      * @return
122      */
123     public Optional<OpenJDKTag> previous() {
124         if (buildNum() == 0) {
125             return Optional.empty();
126         }
127 
128         // Make sure build numbers < 10 for JDK 9 tags are not prefixed with '0'
129         var previousBuildNum = buildNum() - 1;
130         var formattedBuildNum = String.format(buildPrefix.equals("+") ? "%d" : "%02d", previousBuildNum);
131         var tagName = prefix + buildPrefix + formattedBuildNum;
132         var tag = new Tag(tagName);
133         return create(tag);
134     }
< prev index next >