use of com.airbnb.deeplinkdispatch.sample.library.LibraryDeepLinkModuleRegistry in project DeepLinkDispatch by airbnb.
the class TypeConversionErrorHandlerCustomTypeDeepLinkActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
typeConverters = new TypeConverters();
typeConverters.put(ComparableColorDrawable.class, value -> {
switch(value.toLowerCase()) {
case "red":
return new ComparableColorDrawable(0xff0000ff);
case "green":
return new ComparableColorDrawable(0x00ff00ff);
case "blue":
return new ComparableColorDrawable(0x000ffff);
default:
return new ComparableColorDrawable(0xffffffff);
}
});
try {
// Not very elegant reflection way to get the right type to add to the mapper.
typeConverters.put(TypeConversionErrorHandlerCustomTypeDeepLinkActivity.class.getDeclaredField("stringList").getGenericType(), value -> Arrays.asList(value.split(",")));
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
Function3<DeepLinkUri, Type, ? super String, Integer> typeConversionErrorNullable = (Function3<DeepLinkUri, Type, String, Integer>) (uriTemplate, type, s) -> {
Log.e(TAG, "Unable to convert " + s + " used in urlTemplate " + uriTemplate + " to a " + type + ". Returning null.");
throw new NumberFormatException("For input string: \"" + s + "\"");
};
Function3<DeepLinkUri, Type, ? super String, Integer> typeConversionErrorNonNullable = (Function3<DeepLinkUri, Type, String, Integer>) (uriTemplate, type, s) -> {
Log.e(TAG, "Unable to convert " + s + " used in urlTemplate " + uriTemplate + " to a " + type + ". Returning 0.");
throw new NumberFormatException("For input string: \"" + s + "\"");
};
Function0<TypeConverters> typeConvertersLambda = () -> typeConverters;
super.onCreate(savedInstanceState);
Map configurablePlaceholdersMap = new HashMap();
configurablePlaceholdersMap.put("configPathOne", "somePathThree");
configurablePlaceholdersMap.put("configurable-path-segment-one", "");
configurablePlaceholdersMap.put("configurable-path-segment", "");
configurablePlaceholdersMap.put("configurable-path-segment-two", "");
configurablePlaceholdersMap.put("configPathOne", "somePathOne");
DeepLinkDelegate deepLinkDelegate = new DeepLinkDelegate(new SampleModuleRegistry(), new LibraryDeepLinkModuleRegistry(), new BenchmarkDeepLinkModuleRegistry(), new KaptLibraryDeepLinkModuleRegistry(), configurablePlaceholdersMap, typeConvertersLambda, typeConversionErrorNullable, typeConversionErrorNonNullable);
deepLinkDelegate.dispatchFrom(this);
finish();
}
use of com.airbnb.deeplinkdispatch.sample.library.LibraryDeepLinkModuleRegistry in project DeepLinkDispatch by airbnb.
the class MainActivityTest method testTwoConfigurablePathSegmentsMatch.
@Test
public void testTwoConfigurablePathSegmentsMatch() {
Map<String, String> configurablePathSegmentReplacements = new HashMap<>();
configurablePathSegmentReplacements.put("configurable-path-segment", "obamaOs");
configurablePathSegmentReplacements.put("configurable-path-segment-one", "belong");
configurablePathSegmentReplacements.put("configurable-path-segment-two", "anywhere");
DeepLinkDelegate deepLinkDelegate = new DeepLinkDelegate(new SampleModuleRegistry(), new LibraryDeepLinkModuleRegistry(), new BenchmarkDeepLinkModuleRegistry(), new KaptLibraryDeepLinkModuleRegistry(), configurablePathSegmentReplacements);
assertThat(deepLinkDelegate.supportsUri("https://www.example.com/anywhere/belong/foo"), equalTo(false));
assertThat(deepLinkDelegate.supportsUri("https://www.example.com/belong/anywhere/foo"), equalTo(true));
}
use of com.airbnb.deeplinkdispatch.sample.library.LibraryDeepLinkModuleRegistry in project DeepLinkDispatch by airbnb.
the class MainActivityTest method testPathSegmentUriNoMatch.
@Test
public void testPathSegmentUriNoMatch() {
Map<String, String> configurablePathSegmentReplacements = new HashMap<>();
configurablePathSegmentReplacements.put("configurable-path-segment", "obamaOs");
configurablePathSegmentReplacements.put("configurable-path-segment-one", "belong");
configurablePathSegmentReplacements.put("configurable-path-segment-two", "anywhere");
DeepLinkDelegate deepLinkDelegate = new DeepLinkDelegate(new SampleModuleRegistry(), new LibraryDeepLinkModuleRegistry(), new BenchmarkDeepLinkModuleRegistry(), new KaptLibraryDeepLinkModuleRegistry(), configurablePathSegmentReplacements);
assertThat(deepLinkDelegate.supportsUri("https://www.example.com/<capnMccains>/bar"), equalTo(false));
assertThat(deepLinkDelegate.supportsUri("https://www.example.com/<obamaOs>/bar"), equalTo(false));
}
use of com.airbnb.deeplinkdispatch.sample.library.LibraryDeepLinkModuleRegistry in project DeepLinkDispatch by airbnb.
the class MainActivityTest method testSupportsUri.
@Test
public void testSupportsUri() throws Exception {
Map<String, String> configurablePathSegmentReplacements = new HashMap<>();
configurablePathSegmentReplacements.put("configurable-path-segment", "obamaOs");
configurablePathSegmentReplacements.put("configurable-path-segment-one", "belong");
configurablePathSegmentReplacements.put("configurable-path-segment-two", "anywhere");
DeepLinkDelegate deepLinkDelegate = new DeepLinkDelegate(new SampleModuleRegistry(), new LibraryDeepLinkModuleRegistry(), new BenchmarkDeepLinkModuleRegistry(), new KaptLibraryDeepLinkModuleRegistry(), configurablePathSegmentReplacements);
assertThat(deepLinkDelegate.supportsUri("dld://classDeepLink"), equalTo(true));
assertThat(deepLinkDelegate.supportsUri("some://weirdNonExistentUri"), equalTo(false));
}
use of com.airbnb.deeplinkdispatch.sample.library.LibraryDeepLinkModuleRegistry in project DeepLinkDispatch by airbnb.
the class MainActivityTest method testMissingKeysThrowsIAException.
@Test
public void testMissingKeysThrowsIAException() {
DeepLinkDispatch.setValidationExecutor(TestUtils.getImmediateExecutor());
String message = "";
try {
Map<String, String> configurablePathSegmentReplacements = new HashMap<>();
configurablePathSegmentReplacements.put("configurable-path-segment", "obamaOs");
DeepLinkDelegate deepLinkDelegate = new DeepLinkDelegate(new SampleModuleRegistry(), new LibraryDeepLinkModuleRegistry(), new BenchmarkDeepLinkModuleRegistry(), new KaptLibraryDeepLinkModuleRegistry(), configurablePathSegmentReplacements);
} catch (IllegalArgumentException e) {
message = e.getMessage();
}
// Alternatively, we could have used @Test(expected = IllegalArgumentException.class), but I wanted to assert this message.
assertEquals("Keys not found in BaseDeepLinkDelegate's mapping of PathVariableReplacementValues. Missing keys are:\n" + "configurable-path-segment-one,\n" + "configurable-path-segment-two.\n" + "Keys in mapping are:\n" + "configurable-path-segment.", message);
}
Aggregations