Skip to content

Commit e80e76c

Browse files
authored
Merge pull request #678 from Azquelt/extensible-methods
Add `Extensible.hasExtension` and `.getExtension`
2 parents 74ab942 + 1325b38 commit e80e76c

File tree

14 files changed

+54
-12
lines changed

14 files changed

+54
-12
lines changed

api/src/main/java/org/eclipse/microprofile/openapi/models/Extensible.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,34 @@ default T extensions(Map<String, Object> extensions) {
7676
*/
7777
void setExtensions(Map<String, Object> extensions);
7878

79+
/**
80+
* Checks whether an extension with the given name is present in this Extensible's map of extensions.
81+
*
82+
* @param name
83+
* the key used to access the extension object. Always prefixed by "x-".
84+
* @return {@code true} if an extension with the given name is present, otherwise {@code false}
85+
*/
86+
default boolean hasExtension(String name) {
87+
Map<String, Object> map = getExtensions();
88+
if (map == null) {
89+
return false;
90+
}
91+
return map.containsKey(name);
92+
}
93+
94+
/**
95+
* Returns the extension object with the given name from this Extensible's map of extensions.
96+
*
97+
* @param name
98+
* the key used to access the extension object. Always prefixed by "x-".
99+
* @return the corresponding extension object, or {@code null} if no extension with the given name is present
100+
*/
101+
default Object getExtension(String name) {
102+
Map<String, Object> map = getExtensions();
103+
if (map == null) {
104+
return null;
105+
}
106+
return map.get(name);
107+
}
108+
79109
}

api/src/main/java/org/eclipse/microprofile/openapi/models/callbacks/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
* The behaviour of methods inherited from java.lang.Object are undefined by the MicroProfile OpenAPI specification.
1818
*/
1919

20-
@org.osgi.annotation.versioning.Version("2.0")
20+
@org.osgi.annotation.versioning.Version("2.1")
2121
@org.osgi.annotation.versioning.ProviderType
2222
package org.eclipse.microprofile.openapi.models.callbacks;

api/src/main/java/org/eclipse/microprofile/openapi/models/examples/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@
3131
* </pre>
3232
*/
3333

34-
@org.osgi.annotation.versioning.Version("1.0")
34+
@org.osgi.annotation.versioning.Version("1.1")
3535
@org.osgi.annotation.versioning.ProviderType
3636
package org.eclipse.microprofile.openapi.models.examples;

api/src/main/java/org/eclipse/microprofile/openapi/models/headers/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,6 @@
3535
* </pre>
3636
*/
3737

38-
@org.osgi.annotation.versioning.Version("1.0")
38+
@org.osgi.annotation.versioning.Version("1.1")
3939
@org.osgi.annotation.versioning.ProviderType
4040
package org.eclipse.microprofile.openapi.models.headers;

api/src/main/java/org/eclipse/microprofile/openapi/models/info/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@
4040
* </pre>
4141
*/
4242

43-
@org.osgi.annotation.versioning.Version("1.1")
43+
@org.osgi.annotation.versioning.Version("1.2")
4444
@org.osgi.annotation.versioning.ProviderType
4545
package org.eclipse.microprofile.openapi.models.info;

api/src/main/java/org/eclipse/microprofile/openapi/models/links/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
* </pre>
3030
*/
3131

32-
@org.osgi.annotation.versioning.Version("1.0")
32+
@org.osgi.annotation.versioning.Version("1.1")
3333
@org.osgi.annotation.versioning.ProviderType
3434
package org.eclipse.microprofile.openapi.models.links;

api/src/main/java/org/eclipse/microprofile/openapi/models/media/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@
3030
* </pre>
3131
*/
3232

33-
@org.osgi.annotation.versioning.Version("3.0")
33+
@org.osgi.annotation.versioning.Version("3.1")
3434
@org.osgi.annotation.versioning.ProviderType
3535
package org.eclipse.microprofile.openapi.models.media;

api/src/main/java/org/eclipse/microprofile/openapi/models/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@
4040
* </pre>
4141
*/
4242

43-
@org.osgi.annotation.versioning.Version("2.1")
43+
@org.osgi.annotation.versioning.Version("2.2")
4444
@org.osgi.annotation.versioning.ProviderType
4545
package org.eclipse.microprofile.openapi.models;

api/src/main/java/org/eclipse/microprofile/openapi/models/parameters/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@
3232
* </pre>
3333
*/
3434

35-
@org.osgi.annotation.versioning.Version("1.0")
35+
@org.osgi.annotation.versioning.Version("1.1")
3636
@org.osgi.annotation.versioning.ProviderType
3737
package org.eclipse.microprofile.openapi.models.parameters;

api/src/main/java/org/eclipse/microprofile/openapi/models/responses/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@
3434
* </pre>
3535
*/
3636

37-
@org.osgi.annotation.versioning.Version("2.0")
37+
@org.osgi.annotation.versioning.Version("2.1")
3838
@org.osgi.annotation.versioning.ProviderType
3939
package org.eclipse.microprofile.openapi.models.responses;

api/src/main/java/org/eclipse/microprofile/openapi/models/security/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828
* </pre>
2929
*/
3030

31-
@org.osgi.annotation.versioning.Version("2.1")
31+
@org.osgi.annotation.versioning.Version("2.2")
3232
@org.osgi.annotation.versioning.ProviderType
3333
package org.eclipse.microprofile.openapi.models.security;

api/src/main/java/org/eclipse/microprofile/openapi/models/servers/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,6 @@
3535
* </pre>
3636
*/
3737

38-
@org.osgi.annotation.versioning.Version("2.0")
38+
@org.osgi.annotation.versioning.Version("2.1")
3939
@org.osgi.annotation.versioning.ProviderType
4040
package org.eclipse.microprofile.openapi.models.servers;

api/src/main/java/org/eclipse/microprofile/openapi/models/tags/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
* </pre>
3030
*/
3131

32-
@org.osgi.annotation.versioning.Version("1.0")
32+
@org.osgi.annotation.versioning.Version("1.1")
3333
@org.osgi.annotation.versioning.ProviderType
3434
package org.eclipse.microprofile.openapi.models.tags;

tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelConstructionTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1781,16 +1781,28 @@ private void processExtensible(Extensible<?> e) {
17811781
assertEquals(map.size(), 2, "The extensions map is expected to contain two entries.");
17821782
assertTrue(map.containsKey(extensionName1),
17831783
"The extensions map is expected to contain the key: " + extensionName1);
1784+
assertTrue(e.hasExtension(extensionName1),
1785+
"hasExtension is expected to return true for the key: " + extensionName1);
17841786
assertTrue(map.containsKey(extensionName2),
17851787
"The extensions map is expected to contain the key: " + extensionName2);
1788+
assertTrue(e.hasExtension(extensionName2),
1789+
"hasExtension is expected to return true for the key: " + extensionName2);
17861790
assertSame(map.get(extensionName1), obj1,
17871791
"The value associated with the key: " + extensionName1
17881792
+ " is expected to be the same one that was added.");
1793+
assertSame(e.getExtension(extensionName1), obj1,
1794+
"getExtension should return the same instance added for the key: " + extensionName1);
17891795
assertSame(map.get(extensionName2), obj2,
17901796
"The value associated with the key: " + extensionName2
17911797
+ " is expected to be the same one that was added.");
1798+
assertSame(e.getExtension(extensionName2), obj2,
1799+
"getExtension should return the same instance added for the key: " + extensionName2);
17921800
e.removeExtension(extensionName1);
17931801
assertEquals(e.getExtensions().size(), 1, "The extensions map is expected to contain one entry.");
1802+
assertFalse(e.hasExtension(extensionName1),
1803+
"hasExtension is expected to return false for removed key: " + extensionName1);
1804+
assertNull(e.getExtension(extensionName1),
1805+
"getExtension is expected to return null for removed key: " + extensionName1);
17941806
// Check that the extension map can be replaced with the setter and that it is returned by the getter.
17951807
final Map<String, Object> newMap = new HashMap<>();
17961808
e.setExtensions(newMap);

0 commit comments

Comments
 (0)