JsonConverter extends AbstractConfigurationConverter { @Override public Object fromConfiguration(final ConverterLookup lookup, final PlexusConfiguration configuration, final Class<?> type, final Class<?> enclosingType, final ClassLoader loader, final ExpressionEvaluator evaluator, final ConfigurationListener listener) throws ComponentConfigurationException { return readJsonObjectFromConfig(configuration, evaluator); }  static String plexusPluralStem(final String key); @Override boolean canConvert(final Class<?> type); @Override Object fromConfiguration(final ConverterLookup lookup,
                                    final PlexusConfiguration configuration,
                                    final Class<?> type,
                                    final Class<?> enclosingType,
                                    final ClassLoader loader,
                                    final ExpressionEvaluator evaluator,
                                    final ConfigurationListener listener); JsonValue convertChild(final @NotNull PlexusConfiguration child, final ExpressionEvaluator evaluator); static Object stringToValue(String string);  }
@Test public void testFromConfiguration() throws Exception { final ConverterLookup lookup = mock(ConverterLookup.class); final PlexusConfiguration config = xml("foosBar.xml"); final Class<?> type = JsonObject.class; final Class<?> enclosingType = Object.class; final ClassLoader loader = getClass().getClassLoader(); final ExpressionEvaluator eval = mock(ExpressionEvaluator.class); when(eval.evaluate(anyString())).thenAnswer(call -> call.getArgument(0, String.class)); final ConfigurationListener listener = mock(ConfigurationListener.class); assertEquals("should convert config", key("bar", "one").get(), converter().fromConfiguration(lookup, config, type, enclosingType, loader, eval, listener)); }