public boolean isRight() { return ! isLeft(); }
public <X> X cata(Function<L,X> left, Function<R,X> right) { // warning: left.invoke, because of FEEL specs, could return null. The below is the safest way to implement cata over this Either. return isLeft() ? left.apply( this.left.get() ) : right.apply( this.right.orElse( null ) ); } }
@Test public void testLocateInNSnoModelNameWithAlias2() { final Import i = makeImport("nsA", "boh", null); final List<QName> available = Arrays.asList(new QName("nsA", "m1"), new QName("nsA", "m2"), new QName("nsB", "m3")); final Either<String, QName> result = ImportDMNResolverUtil.resolveImportDMN(i, available, Function.identity()); assertTrue(result.isLeft()); }
@Test public void testLocateInNSnoModelNameWithAlias() { final Import i = makeImport("nsA", "m1", null); final List<QName> available = Arrays.asList(new QName("nsA", "m1"), new QName("nsA", "m2"), new QName("nsB", "m3")); final Either<String, QName> result = ImportDMNResolverUtil.resolveImportDMN(i, available, Function.identity()); assertTrue(result.isLeft()); }
@Test public void testNSandUnexistentModelName() { final Import i = makeImport("ns1", null, "boh"); final List<QName> available = Arrays.asList(new QName("ns1", "m1"), new QName("ns2", "m2"), new QName("ns3", "m3")); final Either<String, QName> result = ImportDMNResolverUtil.resolveImportDMN(i, available, Function.identity()); assertTrue(result.isLeft()); }
@Test public void testLocateInNSunexistent() { final Import i = makeImport("nsA", null, "boh"); final List<QName> available = Arrays.asList(new QName("nsA", "m1"), new QName("nsA", "m2"), new QName("nsB", "m3")); final Either<String, QName> result = ImportDMNResolverUtil.resolveImportDMN(i, available, Function.identity()); assertTrue(result.isLeft()); }
@Test public void testLocateInNSAliasedBadScenario() { // this is a BAD scenario are in namespace `nsA` there are 2 models with the same name. final Import i = makeImport("nsA", "aliased", "mA"); final List<QName> available = Arrays.asList(new QName("nsA", "mA"), new QName("nsA", "mA"), new QName("nsB", "m3")); final Either<String, QName> result = ImportDMNResolverUtil.resolveImportDMN(i, available, Function.identity()); assertTrue(result.isLeft()); }
if ( actualInputMatch.isLeft() ) { return actualInputMatch.cata( e -> FEELFnResult.ofError(e), e -> FEELFnResult.ofError(null) );