IntentMapper { public static Builder builder() { return new Builder() .addIntentPropertyReaders(DEFAULT_INTENT_PROPERTY_READERS) .addSlotPropertyReaders(DEFAULT_SLOT_PROPERTY_READERS); } protected  IntentMapper(Model model,
                           Map<ClassKey, IntentPropertyReader> intentPropertyReaders,
                           Map<ClassKey, SlotPropertyReader> slotPropertyReaders); Object parseIntent(IntentRequest intentRequest); Object parseIntentSlot(IntentRequest intentRequest, String slotName); T parseIntentSlot(IntentRequest intentRequest, String slotName, Class<T> slotClass); T parseIntent(IntentRequest intentRequest, Class<T> intentClass); IntentReader<T> intentReaderFor(Class<T> intentClass, Class<?>... typeParameters); IntentReader<T> intentReaderFor(Class<T> intentClass); IntentReader<T> intentReaderFor(JavaType type); SlotPropertyReader slotReaderFor(Class<T> slotClass); static IntentMapper fromModel(Model model); static Builder builder();  }
@Test public void testCustomSlot() throws IntentParseException { TestCustom expected = new TestCustom(); expected.setName("testCustomSlot"); expected.setValue("value"); expected.setResolutions(Resolutions.builder() .withResolutionsPerAuthority(Collections.emptyList()) .build()); expected.setExplicitResolutions(Resolutions.builder() .withResolutionsPerAuthority(Collections.emptyList()) .build()); expected.setSlot(slot("testCustomSlot", "value")); expected.setIgnoredSlot(null); expected.setExplicitSlot(slot("testCustomSlot", "value")); expected.setSlotConfirmationStatus(SlotConfirmationStatus.CONFIRMED); expected.setExplicitSlotConfirmationStatus(SlotConfirmationStatus.CONFIRMED); testSingleSlot("testCustomSlot", "value", expected, TestIntent::getTestCustomSlot); }
@Test(expected = IllegalArgumentException.class) public void testUnsupportedTypeFailure() { Model.builder().intent(TestIntentUnsupportedType.class).build(); }