Skip to content

Commit 0762a98

Browse files
authored
Merge pull request #233 from bci-oss/bugfix/232-getallurns-returns-non-valid-urns
Adds a resolve method to validate if the given URN is bamm conform …
2 parents d2119b7 + a50ea4c commit 0762a98

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

core/sds-aspect-model-resolver/src/main/java/io/openmanufacturing/sds/aspectmodel/resolver/AspectModelResolver.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import io.openmanufacturing.sds.aspectmodel.versionupdate.MigratorFactory;
4141
import io.openmanufacturing.sds.aspectmodel.versionupdate.MigratorService;
4242
import io.openmanufacturing.sds.aspectmodel.versionupdate.MigratorServiceLoader;
43+
import io.vavr.Value;
4344
import io.vavr.control.Option;
4445
import io.vavr.control.Try;
4546

@@ -66,10 +67,27 @@ public static Set<String> getAllUrnsInModel( final Model model ) {
6667
Stream.of( statement.getObject().asResource().getURI() ) : Stream.empty();
6768

6869
return Stream.of( subjectUri, propertyUri, objectUri )
69-
.flatMap( Function.identity() );
70+
.flatMap( Function.identity() )
71+
.map( AspectModelResolver::resolveBammUrn )
72+
.flatMap( Value::toJavaStream );
7073
} ) ).flatMap( Function.identity() ).collect( Collectors.toSet() );
7174
}
7275

76+
/**
77+
* Tries to resolve the given Bamm URN {@link AspectModelUrn}
78+
*
79+
* @param urn The Aspect (meta) model URN
80+
* @return The {@link String} if it is resolvable, an {@link UrnSyntaxException} otherwise
81+
*/
82+
private static Try<String> resolveBammUrn( final String urn ) {
83+
try {
84+
AspectModelUrn.fromUrn( urn );
85+
return Try.success( urn );
86+
} catch ( final UrnSyntaxException exception ) {
87+
return Try.failure( exception );
88+
}
89+
}
90+
7391
/**
7492
* Method to resolve a given {@link AspectModelUrn} using a suitable {@link ResolutionStrategy}.
7593
* This creates the closure (merged model) of all referenced models and the corresponding meta model.

0 commit comments

Comments
 (0)