diff --git a/CHANGELOG.md b/CHANGELOG.md index f53bb2ac8..410ecb87d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +### [2.1.1](https://www.github.com/googleapis/api-common-java/compare/v2.1.0...v2.1.1) (2021-11-10) + + +### Dependencies + +* update dependency com.google.errorprone:error_prone_annotations to v2.10.0 ([#316](https://www.github.com/googleapis/api-common-java/issues/316)) ([99df091](https://www.github.com/googleapis/api-common-java/commit/99df0919c7901948a90cc411fc212468a7754c01)) + ## [2.1.0](https://www.github.com/googleapis/api-common-java/compare/v2.0.5...v2.1.0) (2021-10-20) diff --git a/build.gradle b/build.gradle index 04f955686..d25359a92 100644 --- a/build.gradle +++ b/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'io.github.gradle-nexus.publish-plugin' group = "com.google.api" archivesBaseName = "api-common" -project.version = "2.1.0" // {x-version-update:api-common:current} +project.version = "2.1.1" // {x-version-update:api-common:current} sourceCompatibility = 1.8 targetCompatibility = 1.8 @@ -46,7 +46,7 @@ ext { auto_value_annotations: 'com.google.auto.value:auto-value-annotations:1.8.2', guava: 'com.google.guava:guava:31.0.1-jre', jsr305: 'com.google.code.findbugs:jsr305:3.0.2', - error_prone_annotations: 'com.google.errorprone:error_prone_annotations:2.9.0', + error_prone_annotations: 'com.google.errorprone:error_prone_annotations:2.10.0', // Testing junit: 'junit:junit:4.13.2', @@ -354,6 +354,9 @@ task javadocCombinedV3(type: Javadoc) { options.addStringOption("doclet", "com.microsoft.doclet.DocFxDoclet") options.addStringOption("projectname", "api-common") options.docletpath = [file(System.getenv('KOKORO_GFILE_DIR') + "/java-docfx-doclet-1.3.0.jar")] + // Newer Gradle 6 passes -notimestamp by default, which the doclet above doesn't understand: + // https://github.com/gradle/gradle/issues/11898 + options.noTimestamp false } clean { diff --git a/src/main/java/com/google/api/pathtemplate/PathTemplate.java b/src/main/java/com/google/api/pathtemplate/PathTemplate.java index 098524210..4e4e770e6 100644 --- a/src/main/java/com/google/api/pathtemplate/PathTemplate.java +++ b/src/main/java/com/google/api/pathtemplate/PathTemplate.java @@ -69,7 +69,7 @@ *

* Here is an example for a template using simple variables: * - *

+ * 
{@code
  *   PathTemplate template = PathTemplate.create("v1/shelves/{shelf}/books/{book}");
  *   assert template.matches("v2/shelves") == false;
  *   Map<String, String> values = template.match("v1/shelves/s1/books/b1");
@@ -78,22 +78,22 @@
  *   expectedValues.put("book", "b1");
  *   assert values.equals(expectedValues);
  *   assert template.instantiate(values).equals("v1/shelves/s1/books/b1");
- * 
+ * }
* * Templates can use variables which match sub-paths. Example: * - *
+ * 
{@code
  *   PathTemplate template = PathTemplate.create("v1/{name=shelves/*/books/*}"};
  *   assert template.match("v1/shelves/books/b1") == null;
  *   Map<String, String> expectedValues = new HashMap<>();
  *   expectedValues.put("name", "shelves/s1/books/b1");
  *   assert template.match("v1/shelves/s1/books/b1").equals(expectedValues);
- * 
+ * }
* * Path templates can also be used with only wildcards. Each wildcard is associated with an implicit * variable {@code $n}, where n is the zero-based position of the wildcard. Example: * - *
+ * 
{@code
  *   PathTemplate template = PathTemplate.create("shelves/*/books/*"};
  *   assert template.match("shelves/books/b1") == null;
  *   Map<String, String> values = template.match("v1/shelves/s1/books/b1");
@@ -101,14 +101,14 @@
  *   expectedValues.put("$0", s1");
  *   expectedValues.put("$1", "b1");
  *   assert values.equals(expectedValues);
- * 
+ * }
* * Paths input to matching can use URL relative syntax to indicate a host name by prefixing the host * name, as in {@code //somewhere.io/some/path}. The host name is matched into the special variable * {@link #HOSTNAME_VAR}. Patterns are agnostic about host names, and the same pattern can be used * for URL relative syntax and simple path syntax: * - *
+ * 
{@code
  *   PathTemplate template = PathTemplate.create("shelves/*"};
  *   Map<String, String> expectedValues = new HashMap<>();
  *   expectedValues.put(PathTemplate.HOSTNAME_VAR, "//somewhere.io");
@@ -117,7 +117,7 @@
  *   expectedValues.clear();
  *   expectedValues.put("$0", s1");
  *   assert template.match("shelves/s1").equals(expectedValues);
- * 
+ * }
* * For the representation of a resource name see {@link TemplatedResourceName}, which is * based on path templates. @@ -347,10 +347,10 @@ public PathTemplate withoutVars() { /** * Returns a path template for the sub-path of the given variable. Example: * - *
+   * 
{@code
    *   PathTemplate template = PathTemplate.create("v1/{name=shelves/*/books/*}");
    *   assert template.subTemplate("name").toString().equals("shelves/*/books/*");
-   * 
+ * }
* * The returned template will never have named variables, but only wildcards, which are dealt with * in matching and instantiation using '$n'-variables. See the documentation of @@ -446,7 +446,7 @@ public void validate(String path, String exceptionMessagePrefix) { * For free wildcards in the template, the matching process creates variables named '$n', where * 'n' is the wildcard's position in the template (starting at n=0). For example: * - *
+   * 
{@code
    *   PathTemplate template = PathTemplate.create("shelves/*/books/*");
    *   Map<String, String> expectedValues = new HashMap<>();
    *   expectedValues.put("$0", "s1");
@@ -459,7 +459,7 @@ public void validate(String path, String exceptionMessagePrefix) {
    *   expectedValues.put("$1", "b1");
    *   assert template.validatedMatch("//somewhere.io/shelves/s1/books/b2", "User exception string")
    *              .equals(expectedValues);
-   * 
+ * }
* * All matched values will be properly unescaped using URL encoding rules (so long as URL encoding * has not been disabled by the {@link #createWithoutUrlEncoding} method). @@ -498,7 +498,7 @@ public boolean matches(String path) { * For free wildcards in the template, the matching process creates variables named '$n', where * 'n' is the wildcard's position in the template (starting at n=0). For example: * - *
+   * 
{@code
    *   PathTemplate template = PathTemplate.create("shelves/*/books/*");
    *   Map<String, String> expectedValues = new HashMap<>();
    *   expectedValues.put("$0", "s1");
@@ -509,7 +509,7 @@ public boolean matches(String path) {
    *   expectedValues.put("$0", "s1");
    *   expectedValues.put("$1", "b1");
    *   assert template.match("//somewhere.io/shelves/s1/books/b2").equals(expectedValues);
-   * 
+ * }
* * All matched values will be properly unescaped using URL encoding rules (so long as URL encoding * has not been disabled by the {@link #createWithoutUrlEncoding} method). @@ -523,13 +523,13 @@ public Map match(String path) { * Matches the path, where the first segment is interpreted as the host name regardless of whether * it starts with '//' or not. Example: * - *
+   * 
{@code
    *   Map<String, String> expectedValues = new HashMap<>();
    *   expectedValues.put(HOSTNAME_VAR, "//somewhere.io");
    *   expectedValues.put("name", "shelves/s1");
    *   assert template("{name=shelves/*}").matchFromFullName("somewhere.io/shelves/s1")
    *            .equals(expectedValues);
-   * 
+ * }
*/ @Nullable public Map matchFromFullName(String path) { @@ -721,12 +721,12 @@ public String instantiate(String... keysAndValues) { * Same like {@link #instantiate(Map)} but allows for unbound variables, which are substituted * using their original syntax. Example: * - *
+   * 
{@code
    *   PathTemplate template = PathTemplate.create("v1/shelves/{shelf}/books/{book}");
    *   Map<String, String> partialMap = new HashMap<>();
    *   partialMap.put("shelf", "s1");
    *   assert template.instantiatePartial(partialMap).equals("v1/shelves/s1/books/{book}");
-   * 
+ * }
* * The result of this call can be used to create a new template. */ diff --git a/src/main/java/com/google/api/pathtemplate/TemplatedResourceName.java b/src/main/java/com/google/api/pathtemplate/TemplatedResourceName.java index bbbedeaeb..c5e9cd6e1 100644 --- a/src/main/java/com/google/api/pathtemplate/TemplatedResourceName.java +++ b/src/main/java/com/google/api/pathtemplate/TemplatedResourceName.java @@ -58,12 +58,12 @@ *

* Usage examples: * - *

+ * 
{@code
  *   PathTemplate template = PathTemplate.create("shelves/*/books/*");
  *   TemplatedResourceName resourceName = TemplatedResourceName.create(template, "shelves/s1/books/b1");
  *   assert resourceName.get("$1").equals("b1");
  *   assert resourceName.parentName().toString().equals("shelves/s1/books");
- * 
+ * }
*/ public class TemplatedResourceName implements Map { diff --git a/versions.txt b/versions.txt index a338d9794..8c4d855cb 100644 --- a/versions.txt +++ b/versions.txt @@ -1,4 +1,4 @@ # Format: # module:released-version:current-version -api-common:2.1.0:2.1.0 +api-common:2.1.1:2.1.1