public Object translate(Module contributingModule, Class propertyType, String inputValue, Location location) { if (HiveMind.isBlank(inputValue)) return null; int colonx = inputValue.indexOf(':'); if (colonx < 1) { _errorLog.error(ServiceMessages.invalidProviderSelector(inputValue), null, null); return null; } String prefix = inputValue.substring(0, colonx); ObjectProvider provider = (ObjectProvider) _providers.get(prefix); if (provider == null) { _errorLog.error(ServiceMessages.unknownProviderPrefix(prefix), location, null); return null; } String locator = inputValue.substring(colonx + 1); try { return provider.provideObject(contributingModule, propertyType, locator, location); } catch (Exception ex) { throw new ApplicationRuntimeException(ex.getMessage(), location, ex); } }