private <T extends ServiceInfo> ServiceProvider getServiceProvider( final org.apache.openejb.config.Service service, final Class<? extends T> infoType) throws OpenEJBException { final String providerType = getProviderType(service); final ServiceProvider provider = resolveServiceProvider(service, infoType); if (provider == null) { final List<ServiceProvider> providers = ServiceUtils.getServiceProvidersByServiceType(providerType); final StringBuilder sb = new StringBuilder(); final List<String> types = new ArrayList<String>(); for (final ServiceProvider p : providers) { for (final String type : p.getTypes()) { if (types.contains(type)) { continue; } types.add(type); sb.append(JavaSecurityManagers.getSystemProperty("line.separator")); sb.append(" <").append(p.getService()); sb.append(" id=\"").append(service.getId()).append('"'); sb.append(" type=\"").append(type).append("\"/>"); } } final String noProviderMessage = messages.format("configureService.noProviderForService", providerType, service.getId(), service.getType(), service.getProvider(), sb.toString()); throw new NoSuchProviderException(noProviderMessage); } if (!provider.getService().equals(providerType)) { throw new OpenEJBException(messages.format("configureService.wrongProviderType", service.getId(), providerType)); } return provider; }
@SuppressWarnings({"unchecked"}) private ServiceProvider resolveServiceProvider(Service service, Class infoType) throws OpenEJBException { if (service.getProvider() != null) { return ServiceUtils.getServiceProvider(service.getProvider()); } if (service.getType() != null) { return ServiceUtils.getServiceProviderByType(service.getClass().getSimpleName(), service.getType()); } if (service.getId() != null) { try { return ServiceUtils.getServiceProvider(service.getId()); } catch (NoSuchProviderException e) { } } if (infoType != null) { Service defaultService = getDefaultService(infoType); if (defaultService != null) { return resolveServiceProvider(defaultService, null); } } return null; }
ServiceProvider provider = resolveServiceProvider(service, infoType);
final ServiceProvider provider = resolveServiceProvider(service, infoType);
final org.apache.openejb.config.Service defaultService = getDefaultService(infoType); if (defaultService != null) { return resolveServiceProvider(defaultService, null);
final org.apache.openejb.config.Service defaultService = getDefaultService(infoType); if (defaultService != null) { return resolveServiceProvider(defaultService, null);