Skip to content

Commit

Permalink
fix (core): PredicatesObjects get(String predicateIRI, Class<T> klass…
Browse files Browse the repository at this point in the history
…) now correctly returns null for unknown predicates
  • Loading branch information
vorburger committed Jun 22, 2024
1 parent ae2e031 commit 2591372
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 9 deletions.
11 changes: 3 additions & 8 deletions java/dev/enola/thing/PredicatesObjects.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,7 @@ public interface PredicatesObjects {
* dev.enola.common.convert.ObjectClassConverter}.
*/
default <T> T get(String predicateIRI, Class<T> klass) {
return getOptional(predicateIRI, klass)
// TODO This doesn't handle absent (null) correctly... FIXME!
.orElseThrow(
() ->
new IllegalArgumentException(
predicateIRI + " is not " + klass + "\n" + this));
return getOptional(predicateIRI, klass).orElse(null);
}

/** Object of predicate, with conversion - as Optional (never fails). */
Expand All @@ -103,9 +98,9 @@ default <T> Optional<T> getOptional(String predicateIRI, Class<T> klass) {
if (object == null) return Optional.empty();
if (klass.isInstance(object)) return Optional.of((T) object);
try {
// TODO throw new IllegalArgumentException() instead return empty() ?
return ThingObjectClassConverter.INSTANCE.convertToType(object, klass);
// TODO Conversion should use Datatype... but how to look one up?! GenJavaThing has..
// NB: Do NOT e.g. throw new IllegalArgumentException if conversion !isPresent()
return ThingObjectClassConverter.INSTANCE.convertToType(object, klass);
} catch (IOException e) {
// TODO Get rid of throws IOException and remove this.
// Or better log any exceptions and return just Optional.empty()?
Expand Down
2 changes: 1 addition & 1 deletion java/dev/enola/thing/java/TestThingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public void thing_getters_asclass() {
assertThat(thing.get(TestThing.NUMBER_URI, Integer.class)).isEqualTo(43);
assertThat(ething.get(EXTRA, String.class)).isEqualTo(INSTANT.toString());

// TODO assertThat(thing.get("n/a", String.class)).isNull();
assertThat(thing.get("n/a", String.class)).isNull();
}

@Test
Expand Down

0 comments on commit 2591372

Please sign in to comment.